9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-19 15:09:15 +00:00

修复1.20-1.20.6碰撞

This commit is contained in:
XiaoMoMi
2025-06-08 22:36:56 +08:00
parent 5e447505ef
commit b362dc03d3
6 changed files with 12 additions and 12 deletions

View File

@@ -45,7 +45,6 @@ import org.bukkit.Material;
import org.bukkit.NamespacedKey; import org.bukkit.NamespacedKey;
import org.bukkit.Registry; import org.bukkit.Registry;
import org.bukkit.block.data.BlockData; import org.bukkit.block.data.BlockData;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;

View File

@@ -48,7 +48,6 @@ import org.bstats.bukkit.Metrics;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.event.entity.FoodLevelChangeEvent;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import org.jspecify.annotations.Nullable; import org.jspecify.annotations.Nullable;

View File

@@ -50,7 +50,10 @@ import net.momirealms.craftengine.core.plugin.context.event.EventTrigger;
import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters;
import net.momirealms.craftengine.core.plugin.network.*; import net.momirealms.craftengine.core.plugin.network.*;
import net.momirealms.craftengine.core.util.*; import net.momirealms.craftengine.core.util.*;
import net.momirealms.craftengine.core.world.*; import net.momirealms.craftengine.core.world.BlockHitResult;
import net.momirealms.craftengine.core.world.BlockPos;
import net.momirealms.craftengine.core.world.EntityHitResult;
import net.momirealms.craftengine.core.world.WorldEvents;
import net.momirealms.craftengine.core.world.chunk.Palette; import net.momirealms.craftengine.core.world.chunk.Palette;
import net.momirealms.craftengine.core.world.chunk.PalettedContainer; import net.momirealms.craftengine.core.world.chunk.PalettedContainer;
import net.momirealms.craftengine.core.world.chunk.packet.BlockEntityData; import net.momirealms.craftengine.core.world.chunk.packet.BlockEntityData;
@@ -58,7 +61,6 @@ import net.momirealms.craftengine.core.world.chunk.packet.MCSection;
import net.momirealms.craftengine.core.world.collision.AABB; import net.momirealms.craftengine.core.world.collision.AABB;
import net.momirealms.sparrow.nbt.Tag; import net.momirealms.sparrow.nbt.Tag;
import org.bukkit.*; import org.bukkit.*;
import org.bukkit.World;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.data.BlockData; import org.bukkit.block.data.BlockData;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;

View File

@@ -558,6 +558,8 @@ public class BukkitServerPlayer extends Player {
int currentTick = gameTicks(); int currentTick = gameTicks();
// optimize break speed, otherwise it would be too fast // optimize break speed, otherwise it would be too fast
if (currentTick - this.lastSuccessfulBreak <= 5) return; if (currentTick - this.lastSuccessfulBreak <= 5) return;
Object destroyedState = this.destroyedState;
if (destroyedState == null) return;
try { try {
org.bukkit.entity.Player player = platformPlayer(); org.bukkit.entity.Player player = platformPlayer();
double range = getCachedInteractionRange(); double range = getCachedInteractionRange();
@@ -575,7 +577,7 @@ public class BukkitServerPlayer extends Player {
// send hit sound if the sound is removed // send hit sound if the sound is removed
if (currentTick - this.lastHitBlockTime > 3) { if (currentTick - this.lastHitBlockTime > 3) {
Object blockOwner = FastNMS.INSTANCE.method$BlockState$getBlock(this.destroyedState); Object blockOwner = FastNMS.INSTANCE.method$BlockState$getBlock(destroyedState);
Object soundType = CoreReflections.field$BlockBehaviour$soundType.get(blockOwner); Object soundType = CoreReflections.field$BlockBehaviour$soundType.get(blockOwner);
Object soundEvent = CoreReflections.field$SoundType$hitSound.get(soundType); Object soundEvent = CoreReflections.field$SoundType$hitSound.get(soundType);
Object soundId = FastNMS.INSTANCE.field$SoundEvent$location(soundEvent); Object soundId = FastNMS.INSTANCE.field$SoundEvent$location(soundEvent);
@@ -601,8 +603,8 @@ public class BukkitServerPlayer extends Player {
} }
} }
float progressToAdd = getDestroyProgress(this.destroyedState, hitPos); float progressToAdd = getDestroyProgress(destroyedState, hitPos);
int id = BlockStateUtils.blockStateToId(this.destroyedState); int id = BlockStateUtils.blockStateToId(destroyedState);
ImmutableBlockState customState = BukkitBlockManager.instance().getImmutableBlockState(id); ImmutableBlockState customState = BukkitBlockManager.instance().getImmutableBlockState(id);
// double check custom block // double check custom block
if (customState != null && !customState.isEmpty()) { if (customState != null && !customState.isEmpty()) {
@@ -612,13 +614,13 @@ public class BukkitServerPlayer extends Player {
// it's correct on plugin side // it's correct on plugin side
if (blockSettings.isCorrectTool(item.id())) { if (blockSettings.isCorrectTool(item.id())) {
// but not on serverside // but not on serverside
if (!FastNMS.INSTANCE.method$ItemStack$isCorrectToolForDrops(item.getLiteralObject(), this.destroyedState)) { if (!FastNMS.INSTANCE.method$ItemStack$isCorrectToolForDrops(item.getLiteralObject(), destroyedState)) {
// we fix the speed // we fix the speed
progressToAdd = progressToAdd * (10f / 3f); progressToAdd = progressToAdd * (10f / 3f);
} }
} else { } else {
// not a correct tool on plugin side and not a correct tool on serverside // not a correct tool on plugin side and not a correct tool on serverside
if (!blockSettings.respectToolComponent() || !FastNMS.INSTANCE.method$ItemStack$isCorrectToolForDrops(item.getLiteralObject(), this.destroyedState)) { if (!blockSettings.respectToolComponent() || !FastNMS.INSTANCE.method$ItemStack$isCorrectToolForDrops(item.getLiteralObject(), destroyedState)) {
progressToAdd = progressToAdd * (10f / 3f) * blockSettings.incorrectToolSpeed(); progressToAdd = progressToAdd * (10f / 3f) * blockSettings.incorrectToolSpeed();
} }
} }

View File

@@ -4,8 +4,6 @@ import net.momirealms.craftengine.core.item.ComponentKeys;
import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.NetworkItemHandler; import net.momirealms.craftengine.core.item.NetworkItemHandler;
import net.momirealms.craftengine.core.util.AdventureHelper;
import net.momirealms.craftengine.core.util.Color;
import net.momirealms.craftengine.core.util.VersionHelper; import net.momirealms.craftengine.core.util.VersionHelper;
import net.momirealms.sparrow.nbt.CompoundTag; import net.momirealms.sparrow.nbt.CompoundTag;
import net.momirealms.sparrow.nbt.Tag; import net.momirealms.sparrow.nbt.Tag;

View File

@@ -51,7 +51,7 @@ byte_buddy_version=1.17.5
ahocorasick_version=0.6.3 ahocorasick_version=0.6.3
snake_yaml_version=2.4 snake_yaml_version=2.4
anti_grief_version=0.17 anti_grief_version=0.17
nms_helper_version=0.66.16 nms_helper_version=0.66.17
evalex_version=3.5.0 evalex_version=3.5.0
reactive_streams_version=1.0.4 reactive_streams_version=1.0.4
amazon_awssdk_version=2.31.23 amazon_awssdk_version=2.31.23