mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-03 23:07:40 +01:00
Updated Upstream (Bukkit/CraftBukkit)
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: dfe1fb48 PR-906: Add missing MinecraftExperimental annotation to Bundles 825ab30d PR-905: Add missing MapCursor.Type and update documentation e03d10e6 PR-903: Make BARRIER Waterlogged 1961ead6 PR-898: Use Java Consumer instead of Bukkit Consumer CraftBukkit Changes: f71a799f0 Make BARRIER Waterlogged 172f76a45 Upgrade specialsource-maven-plugin f0702775c SPIGOT-7486: Alternate approach to null profile names 069495671 SPIGOT-7485: Allow air entity items since required for Vanilla logic 5dfd33dc2 SPIGOT-7484: Cancelling PlayerEditBookEvent does not update client's book contents 02d490788 PR-1250: Standardize and centralize Bukkit / Minecraft registry conversion 9024a09b9 PR-1251: Use Java Consumer instead of Bukkit Consumer 6d4b25bf1 Increase diff stability
This commit is contained in:
parent
6bdb4d129d
commit
17f71281d2
@ -13,9 +13,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
+import org.bukkit.event.entity.CreatureSpawnEvent;
|
+import org.bukkit.event.entity.CreatureSpawnEvent;
|
||||||
import org.bukkit.util.Consumer;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
@@ -0,0 +0,0 @@ public interface RegionAccessor {
|
@@ -0,0 +0,0 @@ public interface RegionAccessor {
|
||||||
* {@link Entity} requested cannot be spawned
|
* {@link Entity} requested cannot be spawned
|
||||||
*/
|
*/
|
||||||
|
@ -75,8 +75,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
|
|
||||||
public CraftVillager(CraftServer server, net.minecraft.world.entity.npc.Villager entity) {
|
public CraftVillager(CraftServer server, net.minecraft.world.entity.npc.Villager entity) {
|
||||||
@@ -0,0 +0,0 @@ public class CraftVillager extends CraftAbstractVillager implements Villager {
|
@@ -0,0 +0,0 @@ public class CraftVillager extends CraftAbstractVillager implements Villager {
|
||||||
public static VillagerProfession bukkitToNmsProfession(Profession bukkit) {
|
.getOptional(CraftNamespacedKey.toMinecraft(bukkit.getKey())).orElseThrow();
|
||||||
return BuiltInRegistries.VILLAGER_PROFESSION.get(CraftNamespacedKey.toMinecraft(bukkit.getKey()));
|
}
|
||||||
}
|
}
|
||||||
+
|
+
|
||||||
+ // Paper start - Add villager reputation API
|
+ // Paper start - Add villager reputation API
|
||||||
|
@ -20,7 +20,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ }
|
+ }
|
||||||
+ ImmutableMultimap.Builder<Attribute, AttributeModifier> attributeMapBuilder = ImmutableMultimap.builder();
|
+ ImmutableMultimap.Builder<Attribute, AttributeModifier> attributeMapBuilder = ImmutableMultimap.builder();
|
||||||
+ item.getDefaultAttributeModifiers(CraftEquipmentSlot.getNMS(equipmentSlot)).forEach((attributeBase, attributeModifier) -> {
|
+ item.getDefaultAttributeModifiers(CraftEquipmentSlot.getNMS(equipmentSlot)).forEach((attributeBase, attributeModifier) -> {
|
||||||
+ attributeMapBuilder.put(CraftAttributeMap.fromMinecraft(net.minecraft.core.registries.BuiltInRegistries.ATTRIBUTE.getKey(attributeBase).toString()), CraftAttributeInstance.convert(attributeModifier, equipmentSlot));
|
+ attributeMapBuilder.put(CraftAttribute.stringToBukkit(net.minecraft.core.registries.BuiltInRegistries.ATTRIBUTE.getKey(attributeBase).toString()), CraftAttributeInstance.convert(attributeModifier, equipmentSlot));
|
||||||
+ });
|
+ });
|
||||||
+ return attributeMapBuilder.build();
|
+ return attributeMapBuilder.build();
|
||||||
+ }
|
+ }
|
||||||
|
@ -705,8 +705,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
public Map<String, Object> serialize() {
|
public Map<String, Object> serialize() {
|
||||||
+ // Paper - diff on change
|
+ // Paper - diff on change
|
||||||
Map<String, Object> map = new LinkedHashMap<>();
|
Map<String, Object> map = new LinkedHashMap<>();
|
||||||
if (this.uniqueId != null) {
|
if (this.getUniqueId() != null) {
|
||||||
map.put("uniqueId", this.uniqueId.toString());
|
map.put("uniqueId", this.getUniqueId().toString());
|
||||||
@@ -0,0 +0,0 @@ public final class CraftPlayerProfile implements PlayerProfile {
|
@@ -0,0 +0,0 @@ public final class CraftPlayerProfile implements PlayerProfile {
|
||||||
});
|
});
|
||||||
map.put("properties", propertiesData);
|
map.put("properties", propertiesData);
|
||||||
|
@ -38,7 +38,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ default Sound getPickupSound() {
|
+ default Sound getPickupSound() {
|
||||||
+ return CraftSound.getBukkit(this.getHandle().getPickupSound());
|
+ return CraftSound.minecraftToBukkit(this.getHandle().getPickupSound());
|
||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftAxolotl.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftAxolotl.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftAxolotl.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftAxolotl.java
|
||||||
|
@ -8,7 +8,7 @@ diff --git a/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeMap.ja
|
|||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeMap.java
|
--- a/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeMap.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeMap.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeMap.java
|
||||||
@@ -0,0 +0,0 @@ import org.bukkit.craftbukkit.util.CraftNamespacedKey;
|
@@ -0,0 +0,0 @@ import org.bukkit.attribute.AttributeInstance;
|
||||||
public class CraftAttributeMap implements Attributable {
|
public class CraftAttributeMap implements Attributable {
|
||||||
|
|
||||||
private final AttributeMap handle;
|
private final AttributeMap handle;
|
||||||
|
@ -45,15 +45,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+
|
+
|
||||||
+ final net.minecraft.world.level.biome.BiomeSource biomeSource = serverCache.getGenerator().getBiomeSource();
|
+ final net.minecraft.world.level.biome.BiomeSource biomeSource = serverCache.getGenerator().getBiomeSource();
|
||||||
+ final net.minecraft.world.level.biome.Climate.Sampler sampler = serverCache.randomState().sampler();
|
+ final net.minecraft.world.level.biome.Climate.Sampler sampler = serverCache.randomState().sampler();
|
||||||
+ final net.minecraft.core.Registry<net.minecraft.world.level.biome.Biome> biomeRegistry = this.getHandle().registryAccess().registryOrThrow(net.minecraft.core.registries.Registries.BIOME);
|
|
||||||
+
|
+
|
||||||
+ final List<Biome> possibleBiomes = biomeSource.possibleBiomes().stream()
|
+ final List<Biome> possibleBiomes = biomeSource.possibleBiomes().stream()
|
||||||
+ .map(biome -> CraftBlock.biomeBaseToBiome(biomeRegistry, biome))
|
+ .map(biome -> org.bukkit.craftbukkit.block.CraftBiome.minecraftHolderToBukkit(biome))
|
||||||
+ .toList();
|
+ .toList();
|
||||||
+ return new BiomeProvider() {
|
+ return new BiomeProvider() {
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public Biome getBiome(final org.bukkit.generator.WorldInfo worldInfo, final int x, final int y, final int z) {
|
+ public Biome getBiome(final org.bukkit.generator.WorldInfo worldInfo, final int x, final int y, final int z) {
|
||||||
+ return CraftBlock.biomeBaseToBiome(biomeRegistry, biomeSource.getNoiseBiome(x >> 2, y >> 2, z >> 2, sampler));
|
+ return org.bukkit.craftbukkit.block.CraftBiome.minecraftHolderToBukkit(biomeSource.getNoiseBiome(x >> 2, y >> 2, z >> 2, sampler));
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
@ -118,14 +117,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ registryAccess.lookupOrThrow(net.minecraft.core.registries.Registries.NOISE), getSeed());
|
+ registryAccess.lookupOrThrow(net.minecraft.core.registries.Registries.NOISE), getSeed());
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ final net.minecraft.core.Registry<net.minecraft.world.level.biome.Biome> biomeRegistry = CraftWorldInfo.this.registryAccess.registryOrThrow(net.minecraft.core.registries.Registries.BIOME);
|
|
||||||
+ final java.util.List<org.bukkit.block.Biome> possibleBiomes = CraftWorldInfo.this.vanillaChunkGenerator.getBiomeSource().possibleBiomes().stream()
|
+ final java.util.List<org.bukkit.block.Biome> possibleBiomes = CraftWorldInfo.this.vanillaChunkGenerator.getBiomeSource().possibleBiomes().stream()
|
||||||
+ .map(biome -> org.bukkit.craftbukkit.block.CraftBlock.biomeBaseToBiome(biomeRegistry, biome))
|
+ .map(biome -> org.bukkit.craftbukkit.block.CraftBiome.minecraftHolderToBukkit(biome))
|
||||||
+ .toList();
|
+ .toList();
|
||||||
+ return new org.bukkit.generator.BiomeProvider() {
|
+ return new org.bukkit.generator.BiomeProvider() {
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public org.bukkit.block.Biome getBiome(final WorldInfo worldInfo, final int x, final int y, final int z) {
|
+ public org.bukkit.block.Biome getBiome(final WorldInfo worldInfo, final int x, final int y, final int z) {
|
||||||
+ return org.bukkit.craftbukkit.block.CraftBlock.biomeBaseToBiome(biomeRegistry,
|
+ return org.bukkit.craftbukkit.block.CraftBiome.minecraftHolderToBukkit(
|
||||||
+ CraftWorldInfo.this.vanillaChunkGenerator.getBiomeSource().getNoiseBiome(x >> 2, y >> 2, z >> 2, randomState.sampler()));
|
+ CraftWorldInfo.this.vanillaChunkGenerator.getBiomeSource().getNoiseBiome(x >> 2, y >> 2, z >> 2, randomState.sampler()));
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
|
@ -9,8 +9,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftSound.java
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftSound.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftSound.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftSound.java
|
||||||
@@ -0,0 +0,0 @@ public class CraftSound {
|
@@ -0,0 +0,0 @@ public class CraftSound {
|
||||||
public static Sound getBukkit(SoundEvent soundEffect) {
|
throw new IllegalArgumentException("No Reference holder found for " + bukkit
|
||||||
return Registry.SOUNDS.get(CraftNamespacedKey.fromMinecraft(BuiltInRegistries.SOUND_EVENT.getKey(soundEffect)));
|
+ ", this can happen if a plugin creates its own sound effect with out properly registering it.");
|
||||||
}
|
}
|
||||||
+
|
+
|
||||||
+ // Paper start
|
+ // Paper start
|
||||||
|
@ -54,7 +54,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+import org.bukkit.attribute.Attributable;
|
+import org.bukkit.attribute.Attributable;
|
||||||
+import org.bukkit.attribute.Attribute;
|
+import org.bukkit.attribute.Attribute;
|
||||||
+import org.bukkit.attribute.AttributeInstance;
|
+import org.bukkit.attribute.AttributeInstance;
|
||||||
+import org.bukkit.craftbukkit.attribute.CraftAttributeMap;
|
+import org.bukkit.craftbukkit.attribute.CraftAttribute;
|
||||||
+import org.jetbrains.annotations.NotNull;
|
+import org.jetbrains.annotations.NotNull;
|
||||||
+import org.jetbrains.annotations.Nullable;
|
+import org.jetbrains.annotations.Nullable;
|
||||||
+
|
+
|
||||||
@ -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 = CraftAttributeMap.toMinecraft(attribute);
|
+ net.minecraft.world.entity.ai.attributes.Attribute nmsAttribute = CraftAttribute.bukkitToMinecraft(attribute);
|
||||||
+ if (!this.handle.hasAttribute(nmsAttribute)) {
|
+ if (!this.handle.hasAttribute(nmsAttribute)) {
|
||||||
+ return null;
|
+ return null;
|
||||||
+ }
|
+ }
|
||||||
|
@ -11,12 +11,13 @@ diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main
|
|||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
|
--- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
|
||||||
@@ -0,0 +0,0 @@ import java.io.FileOutputStream;
|
@@ -0,0 +0,0 @@ import java.io.InputStream;
|
||||||
import java.io.InputStream;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
||||||
+import java.util.HashMap;
|
+import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
+import java.util.Map;
|
+import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.jar.JarEntry;
|
import java.util.jar.JarEntry;
|
||||||
@ -26,7 +27,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
import org.objectweb.asm.ClassVisitor;
|
import org.objectweb.asm.ClassVisitor;
|
||||||
import org.objectweb.asm.ClassWriter;
|
import org.objectweb.asm.ClassWriter;
|
||||||
+import org.objectweb.asm.FieldVisitor;
|
+import org.objectweb.asm.FieldVisitor;
|
||||||
+import org.objectweb.asm.Handle;
|
import org.objectweb.asm.Handle;
|
||||||
+import org.objectweb.asm.Label;
|
+import org.objectweb.asm.Label;
|
||||||
import org.objectweb.asm.MethodVisitor;
|
import org.objectweb.asm.MethodVisitor;
|
||||||
import org.objectweb.asm.Opcodes;
|
import org.objectweb.asm.Opcodes;
|
||||||
@ -103,20 +104,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
{
|
{
|
||||||
+ // Paper start - Plugin rewrites
|
+ // Paper start - Plugin rewrites
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public void visitInvokeDynamicInsn(String name, String desc, Handle bootstrapMethodHandle, Object... bootstrapMethodArguments)
|
|
||||||
+ {
|
|
||||||
+ // Paper start - Rewrite plugins
|
|
||||||
+ name = getOriginalOrRewrite( name );
|
|
||||||
+ if ( desc != null )
|
|
||||||
+ {
|
|
||||||
+ desc = getOriginalOrRewrite( desc );
|
|
||||||
+ }
|
|
||||||
+ // Paper end
|
|
||||||
+
|
|
||||||
+ super.visitInvokeDynamicInsn( name, desc, bootstrapMethodHandle, bootstrapMethodArguments );
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public void visitTypeInsn(int opcode, String type)
|
+ public void visitTypeInsn(int opcode, String type)
|
||||||
+ {
|
+ {
|
||||||
+ type = getOriginalOrRewrite( type );
|
+ type = getOriginalOrRewrite( type );
|
||||||
@ -192,3 +179,17 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
if ( value instanceof String && ( (String) value ).equals( "com.mysql.jdbc.Driver" ) )
|
if ( value instanceof String && ( (String) value ).equals( "com.mysql.jdbc.Driver" ) )
|
||||||
{
|
{
|
||||||
super.visitLdcInsn( "com.mysql.cj.jdbc.Driver" );
|
super.visitLdcInsn( "com.mysql.cj.jdbc.Driver" );
|
||||||
|
@@ -0,0 +0,0 @@ public class Commodore
|
||||||
|
@Override
|
||||||
|
public void visitInvokeDynamicInsn( String name, String descriptor, Handle bootstrapMethodHandle, Object... bootstrapMethodArguments )
|
||||||
|
{
|
||||||
|
+ // Paper start - Rewrite plugins
|
||||||
|
+ name = getOriginalOrRewrite( name );
|
||||||
|
+ if ( descriptor != null )
|
||||||
|
+ {
|
||||||
|
+ descriptor = getOriginalOrRewrite( descriptor );
|
||||||
|
+ }
|
||||||
|
+ // Paper end - Rewrite plugins
|
||||||
|
if ( bootstrapMethodHandle.getOwner().equals( "java/lang/invoke/LambdaMetafactory" )
|
||||||
|
&& bootstrapMethodHandle.getName().equals( "metafactory" ) && bootstrapMethodArguments.length == 3 )
|
||||||
|
{
|
||||||
|
@ -26,27 +26,27 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public Sound getBreakSound() {
|
+ public Sound getBreakSound() {
|
||||||
+ return CraftSound.getBukkit(soundEffectType.getBreakSound());
|
+ return CraftSound.minecraftToBukkit(soundEffectType.getBreakSound());
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public Sound getStepSound() {
|
+ public Sound getStepSound() {
|
||||||
+ return CraftSound.getBukkit(soundEffectType.getStepSound());
|
+ return CraftSound.minecraftToBukkit(soundEffectType.getStepSound());
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public Sound getPlaceSound() {
|
+ public Sound getPlaceSound() {
|
||||||
+ return CraftSound.getBukkit(soundEffectType.getPlaceSound());
|
+ return CraftSound.minecraftToBukkit(soundEffectType.getPlaceSound());
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public Sound getHitSound() {
|
+ public Sound getHitSound() {
|
||||||
+ return CraftSound.getBukkit(soundEffectType.getHitSound());
|
+ return CraftSound.minecraftToBukkit(soundEffectType.getHitSound());
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public Sound getFallSound() {
|
+ public Sound getFallSound() {
|
||||||
+ return CraftSound.getBukkit(soundEffectType.getFallSound());
|
+ return CraftSound.minecraftToBukkit(soundEffectType.getFallSound());
|
||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
|
||||||
|
@ -45,8 +45,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
|
|
||||||
private void tryToMerge(ItemEntity other) {
|
private void tryToMerge(ItemEntity other) {
|
||||||
@@ -0,0 +0,0 @@ public class ItemEntity extends Entity implements TraceableEntity {
|
@@ -0,0 +0,0 @@ public class ItemEntity extends Entity implements TraceableEntity {
|
||||||
|
|
||||||
public void setItem(ItemStack stack) {
|
public void setItem(ItemStack stack) {
|
||||||
com.google.common.base.Preconditions.checkArgument(!stack.isEmpty(), "Cannot drop air"); // CraftBukkit
|
|
||||||
this.getEntityData().set(ItemEntity.DATA_ITEM, stack);
|
this.getEntityData().set(ItemEntity.DATA_ITEM, stack);
|
||||||
+ this.despawnRate = this.level().paperConfig().entities.spawning.altItemDespawnRate.enabled ? this.level().paperConfig().entities.spawning.altItemDespawnRate.items.getOrDefault(stack.getItem(), this.level().spigotConfig.itemDespawnRate) : this.level().spigotConfig.itemDespawnRate; // Paper
|
+ this.despawnRate = this.level().paperConfig().entities.spawning.altItemDespawnRate.enabled ? this.level().paperConfig().entities.spawning.altItemDespawnRate.items.getOrDefault(stack.getItem(), this.level().spigotConfig.itemDespawnRate) : this.level().spigotConfig.itemDespawnRate; // Paper
|
||||||
}
|
}
|
||||||
|
@ -9,13 +9,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
|
||||||
@@ -0,0 +0,0 @@ public abstract class CraftRegionAccessor implements RegionAccessor {
|
@@ -0,0 +0,0 @@ public abstract class CraftRegionAccessor implements RegionAccessor {
|
||||||
return CraftBlock.biomeBaseToBiome(this.getHandle().registryAccess().registryOrThrow(Registries.BIOME), this.getHandle().getNoiseBiome(x >> 2, y >> 2, z >> 2));
|
return CraftBiome.minecraftHolderToBukkit(this.getHandle().getNoiseBiome(x >> 2, y >> 2, z >> 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
+ // Paper start
|
+ // Paper start
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public Biome getComputedBiome(int x, int y, int z) {
|
+ public Biome getComputedBiome(int x, int y, int z) {
|
||||||
+ return CraftBlock.biomeBaseToBiome(this.getHandle().registryAccess().registryOrThrow(Registries.BIOME), this.getHandle().getBiome(new BlockPos(x, y, z)));
|
+ return CraftBiome.minecraftHolderToBukkit(this.getHandle().getBiome(new BlockPos(x, y, z)));
|
||||||
+ }
|
+ }
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
+
|
+
|
||||||
|
@ -458,7 +458,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ event.setReviveHealth(event.getEntity().getAttribute(org.bukkit.attribute.Attribute.GENERIC_MAX_HEALTH).getValue());
|
+ event.setReviveHealth(event.getEntity().getAttribute(org.bukkit.attribute.Attribute.GENERIC_MAX_HEALTH).getValue());
|
||||||
+ event.setShouldPlayDeathSound(!victim.silentDeath && !victim.isSilent());
|
+ event.setShouldPlayDeathSound(!victim.silentDeath && !victim.isSilent());
|
||||||
+ net.minecraft.sounds.SoundEvent soundEffect = victim.getDeathSound();
|
+ net.minecraft.sounds.SoundEvent soundEffect = victim.getDeathSound();
|
||||||
+ event.setDeathSound(soundEffect != null ? org.bukkit.craftbukkit.CraftSound.getBukkit(soundEffect) : null);
|
+ event.setDeathSound(soundEffect != null ? org.bukkit.craftbukkit.CraftSound.minecraftToBukkit(soundEffect) : null);
|
||||||
+ event.setDeathSoundCategory(org.bukkit.SoundCategory.valueOf(victim.getSoundSource().name()));
|
+ event.setDeathSoundCategory(org.bukkit.SoundCategory.valueOf(victim.getSoundSource().name()));
|
||||||
+ event.setDeathSoundVolume(victim.getSoundVolume());
|
+ event.setDeathSoundVolume(victim.getSoundVolume());
|
||||||
+ event.setDeathSoundPitch(victim.getVoicePitch());
|
+ event.setDeathSoundPitch(victim.getVoicePitch());
|
||||||
@ -471,7 +471,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ double x = event.getEntity().getLocation().getX();
|
+ double x = event.getEntity().getLocation().getX();
|
||||||
+ double y = event.getEntity().getLocation().getY();
|
+ double y = event.getEntity().getLocation().getY();
|
||||||
+ double z = event.getEntity().getLocation().getZ();
|
+ double z = event.getEntity().getLocation().getZ();
|
||||||
+ net.minecraft.sounds.SoundEvent soundEffect = org.bukkit.craftbukkit.CraftSound.getSoundEffect(event.getDeathSound());
|
+ net.minecraft.sounds.SoundEvent soundEffect = org.bukkit.craftbukkit.CraftSound.bukkitToMinecraft(event.getDeathSound());
|
||||||
+ net.minecraft.sounds.SoundSource soundCategory = net.minecraft.sounds.SoundSource.valueOf(event.getDeathSoundCategory().name());
|
+ net.minecraft.sounds.SoundSource soundCategory = net.minecraft.sounds.SoundSource.valueOf(event.getDeathSoundCategory().name());
|
||||||
+ victim.level().playSound(source, x, y, z, soundEffect, soundCategory, event.getDeathSoundVolume(), event.getDeathSoundPitch());
|
+ victim.level().playSound(source, x, y, z, soundEffect, soundCategory, event.getDeathSoundVolume(), event.getDeathSoundPitch());
|
||||||
+ }
|
+ }
|
||||||
|
@ -7741,7 +7741,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
||||||
@@ -0,0 +0,0 @@ public final class CraftMagicNumbers implements UnsafeValues {
|
@@ -0,0 +0,0 @@ public final class CraftMagicNumbers implements UnsafeValues {
|
||||||
private static final BiMap<net.minecraft.world.level.material.Fluid, Fluid> FLUIDTYPE_FLUID = HashBiMap.create();
|
private static final Map<Item, Material> ITEM_MATERIAL = new HashMap<>();
|
||||||
private static final Map<Material, Item> MATERIAL_ITEM = new HashMap<>();
|
private static final Map<Material, Item> MATERIAL_ITEM = new HashMap<>();
|
||||||
private static final Map<Material, Block> MATERIAL_BLOCK = new HashMap<>();
|
private static final Map<Material, Block> MATERIAL_BLOCK = new HashMap<>();
|
||||||
+ // Paper start
|
+ // Paper start
|
||||||
|
@ -534,9 +534,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftCat.java
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftCat.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftCat.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftCat.java
|
||||||
@@ -0,0 +0,0 @@ public class CraftCat extends CraftTameableAnimal implements Cat {
|
@@ -0,0 +0,0 @@ public class CraftCat extends CraftTameableAnimal implements Cat {
|
||||||
public void setCollarColor(DyeColor color) {
|
.byId(bukkit.ordinal());
|
||||||
this.getHandle().setCollarColor(net.minecraft.world.item.DyeColor.byId(color.getWoolData()));
|
}
|
||||||
}
|
}
|
||||||
|
+
|
||||||
+ // Paper Start - More cat api
|
+ // Paper Start - More cat api
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public void setLyingDown(boolean lyingDown) {
|
+ public void setLyingDown(boolean lyingDown) {
|
||||||
|
@ -25,7 +25,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ final java.util.Map<org.bukkit.attribute.Attribute, org.bukkit.attribute.AttributeModifier> attributeMap = new java.util.HashMap<>();
|
+ final java.util.Map<org.bukkit.attribute.Attribute, org.bukkit.attribute.AttributeModifier> attributeMap = new java.util.HashMap<>();
|
||||||
+ this.handle.getAttributeModifiers().forEach((attribute, attributeModifier) -> {
|
+ this.handle.getAttributeModifiers().forEach((attribute, attributeModifier) -> {
|
||||||
+ attributeMap.put(
|
+ attributeMap.put(
|
||||||
+ org.bukkit.craftbukkit.attribute.CraftAttributeMap.fromMinecraft(attribute.toString()),
|
+ org.bukkit.craftbukkit.attribute.CraftAttribute.stringToBukkit(attribute.toString()),
|
||||||
+ // use zero as amplifier to get the base amount, as it is amount = base * (amplifier + 1)
|
+ // use zero as amplifier to get the base amount, as it is amount = base * (amplifier + 1)
|
||||||
+ org.bukkit.craftbukkit.attribute.CraftAttributeInstance.convert(attributeModifier.create(0))
|
+ org.bukkit.craftbukkit.attribute.CraftAttributeInstance.convert(attributeModifier.create(0))
|
||||||
+ );
|
+ );
|
||||||
@ -36,7 +36,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ @Override
|
+ @Override
|
||||||
+ public double getAttributeModifierAmount(org.bukkit.attribute.Attribute attribute, int effectAmplifier) {
|
+ public double getAttributeModifierAmount(org.bukkit.attribute.Attribute attribute, int effectAmplifier) {
|
||||||
+ 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");
|
||||||
+ net.minecraft.world.entity.ai.attributes.Attribute nmsAttribute = org.bukkit.craftbukkit.attribute.CraftAttributeMap.toMinecraft(attribute);
|
+ net.minecraft.world.entity.ai.attributes.Attribute nmsAttribute = org.bukkit.craftbukkit.attribute.CraftAttribute.bukkitToMinecraft(attribute);
|
||||||
+ com.google.common.base.Preconditions.checkArgument(this.handle.getAttributeModifiers().containsKey(nmsAttribute), attribute + " is not present on " + this.getKey());
|
+ com.google.common.base.Preconditions.checkArgument(this.handle.getAttributeModifiers().containsKey(nmsAttribute), attribute + " is not present on " + this.getKey());
|
||||||
+ return this.handle.getAttributeModifiers().get(nmsAttribute).create(effectAmplifier).getAmount();
|
+ return this.handle.getAttributeModifiers().get(nmsAttribute).create(effectAmplifier).getAmount();
|
||||||
+ }
|
+ }
|
||||||
|
@ -158,12 +158,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ @org.jetbrains.annotations.NotNull
|
+ @org.jetbrains.annotations.NotNull
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public org.bukkit.Sound getHitSound() {
|
+ public org.bukkit.Sound getHitSound() {
|
||||||
+ return org.bukkit.craftbukkit.CraftSound.getBukkit(this.getHandle().soundEvent);
|
+ return org.bukkit.craftbukkit.CraftSound.minecraftToBukkit(this.getHandle().soundEvent);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public void setHitSound(@org.jetbrains.annotations.NotNull org.bukkit.Sound sound) {
|
+ public void setHitSound(@org.jetbrains.annotations.NotNull org.bukkit.Sound sound) {
|
||||||
+ this.getHandle().setSoundEvent(org.bukkit.craftbukkit.CraftSound.getSoundEffect(sound));
|
+ this.getHandle().setSoundEvent(org.bukkit.craftbukkit.CraftSound.bukkitToMinecraft(sound));
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
@Override
|
@Override
|
||||||
|
@ -18,16 +18,3 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
// Paper start - capture all item additions to the world
|
// Paper start - capture all item additions to the world
|
||||||
if (captureDrops != null && entity instanceof net.minecraft.world.entity.item.ItemEntity) {
|
if (captureDrops != null && entity instanceof net.minecraft.world.entity.item.ItemEntity) {
|
||||||
captureDrops.add((net.minecraft.world.entity.item.ItemEntity) entity);
|
captureDrops.add((net.minecraft.world.entity.item.ItemEntity) entity);
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
|
|
||||||
@@ -0,0 +0,0 @@ public class ItemEntity extends Entity implements TraceableEntity {
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setItem(ItemStack stack) {
|
|
||||||
- com.google.common.base.Preconditions.checkArgument(!stack.isEmpty(), "Cannot drop air"); // CraftBukkit
|
|
||||||
+ // com.google.common.base.Preconditions.checkArgument(!stack.isEmpty(), "Cannot drop air"); // CraftBukkit // Paper - Remove check
|
|
||||||
this.getEntityData().set(ItemEntity.DATA_ITEM, stack);
|
|
||||||
this.despawnRate = this.level().paperConfig().entities.spawning.altItemDespawnRate.enabled ? this.level().paperConfig().entities.spawning.altItemDespawnRate.items.getOrDefault(stack.getItem(), this.level().spigotConfig.itemDespawnRate) : this.level().spigotConfig.itemDespawnRate; // Paper
|
|
||||||
}
|
|
||||||
|
@ -579,7 +579,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
- <plugin>
|
- <plugin>
|
||||||
- <groupId>net.md-5</groupId>
|
- <groupId>net.md-5</groupId>
|
||||||
- <artifactId>specialsource-maven-plugin</artifactId>
|
- <artifactId>specialsource-maven-plugin</artifactId>
|
||||||
- <version>1.2.4</version>
|
- <version>2.0.0</version>
|
||||||
- <executions>
|
- <executions>
|
||||||
- <execution>
|
- <execution>
|
||||||
- <phase>package</phase>
|
- <phase>package</phase>
|
||||||
@ -588,6 +588,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
- </goals>
|
- </goals>
|
||||||
- <id>remap-members</id>
|
- <id>remap-members</id>
|
||||||
- <configuration>
|
- <configuration>
|
||||||
|
- <useProjectDependencies>false</useProjectDependencies>
|
||||||
- <logFile>${project.build.directory}/server.txt</logFile>
|
- <logFile>${project.build.directory}/server.txt</logFile>
|
||||||
- <srgIn>org.spigotmc:minecraft-server:${project.version}:csrg:maps-spigot-members</srgIn>
|
- <srgIn>org.spigotmc:minecraft-server:${project.version}:csrg:maps-spigot-members</srgIn>
|
||||||
- <reverse>true</reverse>
|
- <reverse>true</reverse>
|
||||||
@ -737,6 +738,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
- </goals>
|
- </goals>
|
||||||
- <id>remap-obf</id>
|
- <id>remap-obf</id>
|
||||||
- <configuration>
|
- <configuration>
|
||||||
|
- <useProjectDependencies>false</useProjectDependencies>
|
||||||
- <srgIn>org.spigotmc:minecraft-server:${project.version}:csrg:maps-spigot</srgIn>
|
- <srgIn>org.spigotmc:minecraft-server:${project.version}:csrg:maps-spigot</srgIn>
|
||||||
- <reverse>true</reverse>
|
- <reverse>true</reverse>
|
||||||
- <remappedArtifactAttached>true</remappedArtifactAttached>
|
- <remappedArtifactAttached>true</remappedArtifactAttached>
|
||||||
@ -750,6 +752,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
- </goals>
|
- </goals>
|
||||||
- <id>remap-mojang</id>
|
- <id>remap-mojang</id>
|
||||||
- <configuration>
|
- <configuration>
|
||||||
|
- <useProjectDependencies>false</useProjectDependencies>
|
||||||
- <inputFile>${project.build.directory}/${project.artifactId}-${project.version}-remapped-obf.jar</inputFile>
|
- <inputFile>${project.build.directory}/${project.artifactId}-${project.version}-remapped-obf.jar</inputFile>
|
||||||
- <srgIn>org.spigotmc:minecraft-server:${project.version}:txt:maps-mojang</srgIn>
|
- <srgIn>org.spigotmc:minecraft-server:${project.version}:txt:maps-mojang</srgIn>
|
||||||
- <remappedArtifactAttached>true</remappedArtifactAttached>
|
- <remappedArtifactAttached>true</remappedArtifactAttached>
|
||||||
|
@ -54,11 +54,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
- Attribute attribute = CraftAttributeMap.fromMinecraft(attributeName);
|
- Attribute attribute = CraftAttribute.stringToBukkit(attributeName);
|
||||||
+ // Paper start
|
+ // Paper start
|
||||||
+ Attribute attribute;
|
+ Attribute attribute;
|
||||||
+ try {
|
+ try {
|
||||||
+ attribute = CraftAttributeMap.fromMinecraft(attributeName);
|
+ attribute = CraftAttribute.stringToBukkit(attributeName);
|
||||||
+ } catch (IllegalArgumentException e) {
|
+ } catch (IllegalArgumentException e) {
|
||||||
+ attribute = null;
|
+ attribute = null;
|
||||||
+ }
|
+ }
|
||||||
@ -78,7 +78,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
if (tag.contains(SKULL_OWNER.NBT, CraftMagicNumbers.NBT.TAG_COMPOUND)) {
|
if (tag.contains(SKULL_OWNER.NBT, CraftMagicNumbers.NBT.TAG_COMPOUND)) {
|
||||||
this.setProfile(NbtUtils.readGameProfile(tag.getCompound(SKULL_OWNER.NBT)));
|
this.setProfile(NbtUtils.readGameProfile(tag.getCompound(SKULL_OWNER.NBT)));
|
||||||
} else if (tag.contains(SKULL_OWNER.NBT, CraftMagicNumbers.NBT.TAG_STRING) && !tag.getString(SKULL_OWNER.NBT).isEmpty()) {
|
} else if (tag.contains(SKULL_OWNER.NBT, CraftMagicNumbers.NBT.TAG_STRING) && !tag.getString(SKULL_OWNER.NBT).isEmpty()) {
|
||||||
this.setProfile(new CraftGameProfile(null, tag.getString(SKULL_OWNER.NBT)));
|
this.setProfile(new GameProfile(Util.NIL_UUID, tag.getString(SKULL_OWNER.NBT)));
|
||||||
}
|
}
|
||||||
+ } catch (Exception ignored) {} // Paper
|
+ } catch (Exception ignored) {} // Paper
|
||||||
|
|
||||||
|
@ -12,12 +12,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
if (name == null) {
|
if (name == null) {
|
||||||
this.setProfile(null);
|
this.setProfile(null);
|
||||||
} else {
|
} else {
|
||||||
- this.setProfile(new CraftGameProfile(null, name));
|
- this.setProfile(new GameProfile(Util.NIL_UUID, name));
|
||||||
+ // Paper start - Use Online Players Skull
|
+ // Paper start - Use Online Players Skull
|
||||||
+ GameProfile newProfile = null;
|
+ GameProfile newProfile = null;
|
||||||
+ net.minecraft.server.level.ServerPlayer player = net.minecraft.server.MinecraftServer.getServer().getPlayerList().getPlayerByName(name);
|
+ net.minecraft.server.level.ServerPlayer player = net.minecraft.server.MinecraftServer.getServer().getPlayerList().getPlayerByName(name);
|
||||||
+ if (player != null) newProfile = player.getGameProfile();
|
+ if (player != null) newProfile = player.getGameProfile();
|
||||||
+ if (newProfile == null) newProfile = new CraftGameProfile(null, name);
|
+ if (newProfile == null) newProfile = new GameProfile(Util.NIL_UUID, name);
|
||||||
+ this.setProfile(newProfile);
|
+ this.setProfile(newProfile);
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
}
|
}
|
||||||
|
@ -4,38 +4,48 @@ Date: Sun, 20 Mar 2022 22:06:47 -0700
|
|||||||
Subject: [PATCH] cache resource keys
|
Subject: [PATCH] cache resource keys
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBiome.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBiome.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
|
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBiome.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBiome.java
|
||||||
@@ -0,0 +0,0 @@ public class CraftBlock implements Block {
|
@@ -0,0 +0,0 @@ package org.bukkit.craftbukkit.block;
|
||||||
return (biome == null) ? Biome.CUSTOM : biome;
|
import com.google.common.base.Preconditions;
|
||||||
|
import net.minecraft.core.Holder;
|
||||||
|
import net.minecraft.core.registries.Registries;
|
||||||
|
+import net.minecraft.resources.ResourceKey;
|
||||||
|
import org.bukkit.Registry;
|
||||||
|
import org.bukkit.block.Biome;
|
||||||
|
import org.bukkit.craftbukkit.CraftRegistry;
|
||||||
|
@@ -0,0 +0,0 @@ public class CraftBiome {
|
||||||
|
return CraftBiome.minecraftToBukkit(minecraft.value());
|
||||||
}
|
}
|
||||||
|
|
||||||
+ private static final java.util.Map<org.bukkit.block.Biome, net.minecraft.resources.ResourceKey<net.minecraft.world.level.biome.Biome>> BIOME_KEY_CACHE = Collections.synchronizedMap(new java.util.EnumMap<>(Biome.class)); // Paper
|
+ private static final java.util.Map<org.bukkit.block.Biome, ResourceKey<net.minecraft.world.level.biome.Biome>> BIOME_KEY_CACHE = java.util.Collections.synchronizedMap(new java.util.EnumMap<>(Biome.class)); // Paper
|
||||||
public static Holder<net.minecraft.world.level.biome.Biome> biomeToBiomeBase(net.minecraft.core.Registry<net.minecraft.world.level.biome.Biome> registry, Biome bio) {
|
public static net.minecraft.world.level.biome.Biome bukkitToMinecraft(Biome bukkit) {
|
||||||
if (bio == null || bio == Biome.CUSTOM) {
|
if (bukkit == null || bukkit == Biome.CUSTOM) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
- return registry.getHolderOrThrow(ResourceKey.create(Registries.BIOME, CraftNamespacedKey.toMinecraft(bio.getKey())));
|
return CraftRegistry.getMinecraftRegistry(Registries.BIOME)
|
||||||
+ return registry.getHolderOrThrow(BIOME_KEY_CACHE.computeIfAbsent(bio, b -> ResourceKey.create(Registries.BIOME, CraftNamespacedKey.toMinecraft(b.getKey())))); // Paper - cache key
|
- .getOptional(CraftNamespacedKey.toMinecraft(bukkit.getKey())).orElseThrow();
|
||||||
|
+ .getOptional(BIOME_KEY_CACHE.computeIfAbsent(bukkit, b -> ResourceKey.create(Registries.BIOME, CraftNamespacedKey.toMinecraft(b.getKey())))).orElseThrow();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public static Holder<net.minecraft.world.level.biome.Biome> bukkitToMinecraftHolder(Biome bukkit) {
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/tag/CraftEntityTag.java b/src/main/java/org/bukkit/craftbukkit/tag/CraftEntityTag.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntityType.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntityType.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/tag/CraftEntityTag.java
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntityType.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/tag/CraftEntityTag.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntityType.java
|
||||||
@@ -0,0 +0,0 @@ public class CraftEntityTag extends CraftTag<net.minecraft.world.entity.EntityTy
|
@@ -0,0 +0,0 @@ public class CraftEntityType {
|
||||||
super(registry, tag);
|
return bukkit;
|
||||||
}
|
}
|
||||||
|
|
||||||
+ private static final java.util.Map<org.bukkit.entity.EntityType, net.minecraft.resources.ResourceKey<net.minecraft.world.entity.EntityType<?>>> KEY_CACHE = java.util.Collections.synchronizedMap(new java.util.EnumMap<>(EntityType.class)); // Paper
|
+ private static final java.util.Map<EntityType, net.minecraft.resources.ResourceKey<net.minecraft.world.entity.EntityType<?>>> KEY_CACHE = java.util.Collections.synchronizedMap(new java.util.EnumMap<>(EntityType.class)); // Paper
|
||||||
@Override
|
public static net.minecraft.world.entity.EntityType<?> bukkitToMinecraft(EntityType bukkit) {
|
||||||
public boolean isTagged(EntityType entity) {
|
Preconditions.checkArgument(bukkit != null);
|
||||||
- return registry.getHolderOrThrow(ResourceKey.create(Registries.ENTITY_TYPE, CraftNamespacedKey.toMinecraft(entity.getKey()))).is(tag);
|
-
|
||||||
+ return registry.getHolderOrThrow(KEY_CACHE.computeIfAbsent(entity, type -> ResourceKey.create(Registries.ENTITY_TYPE, CraftNamespacedKey.toMinecraft(type.getKey())))).is(tag); // Paper - cache key
|
return CraftRegistry.getMinecraftRegistry(Registries.ENTITY_TYPE)
|
||||||
|
- .getOptional(CraftNamespacedKey.toMinecraft(bukkit.getKey())).orElseThrow();
|
||||||
|
+ .getOptional(KEY_CACHE.computeIfAbsent(bukkit, type -> net.minecraft.resources.ResourceKey.create(Registries.ENTITY_TYPE, CraftNamespacedKey.toMinecraft(type.getKey())))).orElseThrow();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
@Override
|
|
||||||
|
@ -13,39 +13,39 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
|
|
||||||
if (this.getHandle().connection == null) return;
|
if (this.getHandle().connection == null) return;
|
||||||
|
|
||||||
- String instrumentName = switch (instrument.ordinal()) {
|
- Sound instrumentSound = switch (instrument.ordinal()) {
|
||||||
- case 0 -> "harp";
|
- case 0 -> Sound.BLOCK_NOTE_BLOCK_HARP;
|
||||||
- case 1 -> "basedrum";
|
- case 1 -> Sound.BLOCK_NOTE_BLOCK_BASEDRUM;
|
||||||
- case 2 -> "snare";
|
- case 2 -> Sound.BLOCK_NOTE_BLOCK_SNARE;
|
||||||
- case 3 -> "hat";
|
- case 3 -> Sound.BLOCK_NOTE_BLOCK_HAT;
|
||||||
- case 4 -> "bass";
|
- case 4 -> Sound.BLOCK_NOTE_BLOCK_BASS;
|
||||||
- case 5 -> "flute";
|
- case 5 -> Sound.BLOCK_NOTE_BLOCK_FLUTE;
|
||||||
- case 6 -> "bell";
|
- case 6 -> Sound.BLOCK_NOTE_BLOCK_BELL;
|
||||||
- case 7 -> "guitar";
|
- case 7 -> Sound.BLOCK_NOTE_BLOCK_GUITAR;
|
||||||
- case 8 -> "chime";
|
- case 8 -> Sound.BLOCK_NOTE_BLOCK_CHIME;
|
||||||
- case 9 -> "xylophone";
|
- case 9 -> Sound.BLOCK_NOTE_BLOCK_XYLOPHONE;
|
||||||
- case 10 -> "iron_xylophone";
|
- case 10 -> Sound.BLOCK_NOTE_BLOCK_IRON_XYLOPHONE;
|
||||||
- case 11 -> "cow_bell";
|
- case 11 -> Sound.BLOCK_NOTE_BLOCK_COW_BELL;
|
||||||
- case 12 -> "didgeridoo";
|
- case 12 -> Sound.BLOCK_NOTE_BLOCK_DIDGERIDOO;
|
||||||
- case 13 -> "bit";
|
- case 13 -> Sound.BLOCK_NOTE_BLOCK_BIT;
|
||||||
- case 14 -> "banjo";
|
- case 14 -> Sound.BLOCK_NOTE_BLOCK_BANJO;
|
||||||
- case 15 -> "pling";
|
- case 15 -> Sound.BLOCK_NOTE_BLOCK_PLING;
|
||||||
- case 16 -> "xylophone";
|
- case 16 -> Sound.BLOCK_NOTE_BLOCK_XYLOPHONE;
|
||||||
- default -> null;
|
- default -> null;
|
||||||
- };
|
- };
|
||||||
-
|
-
|
||||||
- float f = (float) Math.pow(2.0D, (note.getId() - 12.0D) / 12.0D);
|
- float f = (float) Math.pow(2.0D, (note.getId() - 12.0D) / 12.0D);
|
||||||
- this.getHandle().connection.send(new ClientboundSoundPacket(BuiltInRegistries.SOUND_EVENT.wrapAsHolder(CraftSound.getSoundEffect("block.note_block." + instrumentName)), net.minecraft.sounds.SoundSource.RECORDS, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), 3.0f, f, this.getHandle().getRandom().nextLong()));
|
- this.getHandle().connection.send(new ClientboundSoundPacket(CraftSound.bukkitToMinecraftHolder(instrumentSound), net.minecraft.sounds.SoundSource.RECORDS, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), 3.0f, f, this.getHandle().getRandom().nextLong()));
|
||||||
+ // Paper start - fix all this (modeled off of NoteBlock)
|
+ // Paper start - fix all this (modeled off of NoteBlock)
|
||||||
+ net.minecraft.world.level.block.state.properties.NoteBlockInstrument nms = CraftBlockData.toNMS(instrument, net.minecraft.world.level.block.state.properties.NoteBlockInstrument.class);
|
+ net.minecraft.world.level.block.state.properties.NoteBlockInstrument noteBlockInstrument = CraftBlockData.toNMS(instrument, net.minecraft.world.level.block.state.properties.NoteBlockInstrument.class);
|
||||||
+ float f;
|
+ float pitch;
|
||||||
+ if (nms.isTunable()) {
|
+ if (noteBlockInstrument.isTunable()) {
|
||||||
+ f = (float) Math.pow(2.0D, (note.getId() - 12.0D) / 12.0D);
|
+ pitch = (float) Math.pow(2.0D, (note.getId() - 12.0D) / 12.0D);
|
||||||
+ } else {
|
+ } else {
|
||||||
+ f = 1.0f;
|
+ pitch = 1.0f;
|
||||||
+ }
|
+ }
|
||||||
+ if (!nms.hasCustomSound()) {
|
+ if (!noteBlockInstrument.hasCustomSound()) {
|
||||||
+ this.getHandle().connection.send(new ClientboundSoundPacket(nms.getSoundEvent(), net.minecraft.sounds.SoundSource.RECORDS, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), 3.0f, f, this.getHandle().getRandom().nextLong()));
|
+ this.getHandle().connection.send(new ClientboundSoundPacket(noteBlockInstrument.getSoundEvent(), net.minecraft.sounds.SoundSource.RECORDS, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), 3.0f, pitch, this.getHandle().getRandom().nextLong()));
|
||||||
+ }
|
+ }
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
}
|
}
|
||||||
|
@ -26,20 +26,17 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
--- a/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeMap.java
|
--- a/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeMap.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeMap.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeMap.java
|
||||||
@@ -0,0 +0,0 @@ public class CraftAttributeMap implements Attributable {
|
@@ -0,0 +0,0 @@ public class CraftAttributeMap implements Attributable {
|
||||||
|
|
||||||
return (nms == null) ? null : new CraftAttributeInstance(nms, attribute);
|
return (nms == null) ? null : new CraftAttributeInstance(nms, attribute);
|
||||||
}
|
}
|
||||||
|
|
||||||
+ // Paper start
|
+ // Paper start
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public void registerAttribute(Attribute attribute) {
|
+ public void registerAttribute(Attribute attribute) {
|
||||||
+ Preconditions.checkArgument(attribute != null, "attribute");
|
+ Preconditions.checkArgument(attribute != null, "attribute");
|
||||||
+ handle.registerAttribute(CraftAttributeMap.toMinecraft(attribute));
|
+ handle.registerAttribute(CraftAttribute.bukkitToMinecraft(attribute));
|
||||||
+ }
|
+ }
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
+
|
}
|
||||||
public static net.minecraft.world.entity.ai.attributes.Attribute toMinecraft(Attribute attribute) {
|
|
||||||
return BuiltInRegistries.ATTRIBUTE.get(CraftNamespacedKey.toMinecraft(attribute.getKey()));
|
|
||||||
}
|
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit d7a7a6c677a84a646a24069572b2ba8b189b4693
|
Subproject commit dfe1fb4853158bd17f6955527ad3bf85f4d5150d
|
@ -1 +1 @@
|
|||||||
Subproject commit 28c10232864804265dd3fa4e2008a55e1718b128
|
Subproject commit f71a799f03aae4277a48b4a1082b478833975682
|
Loading…
Reference in New Issue
Block a user