mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-19 15:09:15 +00:00
Merge branch 'Xiao-MoMi:dev' into dev
This commit is contained in:
@@ -778,7 +778,7 @@ public class BukkitBlockManager extends AbstractBlockManager {
|
||||
builder2.put(stateId, blockHolder);
|
||||
stateIds.add(stateId);
|
||||
|
||||
deceiveBukkit(newRealBlock, clientSideBlockType);
|
||||
deceiveBukkit(newRealBlock, clientSideBlockType, isNoteBlock);
|
||||
order.add(realBlockKey);
|
||||
counter++;
|
||||
}
|
||||
@@ -818,9 +818,9 @@ public class BukkitBlockManager extends AbstractBlockManager {
|
||||
return states.get(0);
|
||||
}
|
||||
|
||||
private void deceiveBukkit(Object newBlock, Key replacedBlock) throws IllegalAccessException {
|
||||
private void deceiveBukkit(Object newBlock, Key replacedBlock, boolean isNoteBlock) throws IllegalAccessException {
|
||||
@SuppressWarnings("unchecked")
|
||||
Map<Object, Material> magicMap = (Map<Object, Material>) Reflections.field$CraftMagicNumbers$BLOCK_MATERIAL.get(null);
|
||||
magicMap.put(newBlock, org.bukkit.Registry.MATERIAL.get(Objects.requireNonNull(NamespacedKey.fromString(replacedBlock.toString()))));
|
||||
magicMap.put(newBlock, isNoteBlock ? Material.STONE : org.bukkit.Registry.MATERIAL.get(new NamespacedKey(replacedBlock.namespace(), replacedBlock.value())));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ import net.momirealms.craftengine.core.plugin.CraftEngine;
|
||||
import net.momirealms.craftengine.core.util.Direction;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.MiscUtils;
|
||||
import net.momirealms.craftengine.core.util.VersionHelper;
|
||||
import net.momirealms.craftengine.shared.block.BlockBehavior;
|
||||
import org.bukkit.block.BlockState;
|
||||
import org.bukkit.event.block.BlockFormEvent;
|
||||
@@ -95,8 +96,15 @@ public class ConcretePowderBlockBehavior extends FallingBlockBehavior {
|
||||
|
||||
@Override
|
||||
public Object updateShape(Object thisBlock, Object[] args, Callable<Object> superMethod) throws Exception {
|
||||
Object level = args[1];
|
||||
Object pos = args[3];
|
||||
Object level;
|
||||
Object pos;
|
||||
if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
level = args[1];
|
||||
pos = args[3];
|
||||
} else {
|
||||
level = args[3];
|
||||
pos = args[4];
|
||||
}
|
||||
if (touchesLiquid(level, pos)) {
|
||||
if (!Reflections.clazz$Level.isInstance(level)) {
|
||||
return getDefaultBlockState();
|
||||
|
||||
@@ -18,7 +18,7 @@ public class WaterLoggedBlockBehavior extends AbstractBlockBehavior {
|
||||
this.waterloggedProperty = waterloggedProperty;
|
||||
}
|
||||
|
||||
// TODO create real waterlogged blocks
|
||||
// TODO create real waterlogged blocks, needs to have real waterlogged property
|
||||
// @Override
|
||||
// public Object pickupBlock(Object thisBlock, Object[] args, Callable<Object> superMethod) throws Exception {
|
||||
// if (this.waterloggedProperty == null) return Reflections.instance$ItemStack$EMPTY;
|
||||
@@ -40,7 +40,6 @@ public class WaterLoggedBlockBehavior extends AbstractBlockBehavior {
|
||||
// Reflections.method$LevelWriter$setBlock.invoke(world, pos, immutableBlockState.with(this.waterloggedProperty, false).customBlockState().handle(), 3);
|
||||
// // TODO check can survive
|
||||
// Object itemStack = Reflections.constructor$ItemStack.newInstance(Reflections.instance$Items$WATER_BUCKET);
|
||||
// System.out.println(itemStack);
|
||||
// return itemStack;
|
||||
// }
|
||||
// }
|
||||
|
||||
@@ -6,6 +6,7 @@ import io.netty.handler.codec.MessageToMessageDecoder;
|
||||
import io.netty.handler.codec.MessageToMessageEncoder;
|
||||
import io.netty.util.internal.logging.InternalLogger;
|
||||
import io.netty.util.internal.logging.InternalLoggerFactory;
|
||||
import net.momirealms.craftengine.bukkit.block.BukkitBlockManager;
|
||||
import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine;
|
||||
import net.momirealms.craftengine.bukkit.plugin.network.impl.*;
|
||||
import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer;
|
||||
@@ -56,6 +57,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
|
||||
private final Map<ChannelPipeline, BukkitServerPlayer> users = new ConcurrentHashMap<>();
|
||||
private final Map<UUID, BukkitServerPlayer> onlineUsers = new ConcurrentHashMap<>();
|
||||
private final HashSet<Channel> injectedChannels = new HashSet<>();
|
||||
private BukkitServerPlayer[] onlineUserArray = new BukkitServerPlayer[0];
|
||||
|
||||
private final PacketIds packetIds;
|
||||
|
||||
@@ -147,6 +149,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
|
||||
if (user != null) {
|
||||
user.setPlayer(player);
|
||||
this.onlineUsers.put(player.getUniqueId(), user);
|
||||
this.resetUserArray();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -158,11 +161,16 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
|
||||
if (user == null) return;
|
||||
handleDisconnection(channel);
|
||||
this.onlineUsers.remove(player.getUniqueId());
|
||||
this.resetUserArray();
|
||||
}
|
||||
|
||||
private void resetUserArray() {
|
||||
this.onlineUserArray = this.onlineUsers.values().toArray(new BukkitServerPlayer[0]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<BukkitServerPlayer> onlineUsers() {
|
||||
return new ArrayList<>(this.onlineUsers.values());
|
||||
public BukkitServerPlayer[] onlineUsers() {
|
||||
return this.onlineUserArray;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -5545,7 +5545,8 @@ public class Reflections {
|
||||
|
||||
public static final Class<?> clazz$SupportType = requireNonNull(
|
||||
ReflectionUtils.getClazz(
|
||||
BukkitReflectionUtils.assembleMCClass("world.level.block.SupportType")
|
||||
BukkitReflectionUtils.assembleMCClass("world.level.block.SupportType"),
|
||||
BukkitReflectionUtils.assembleMCClass("world.level.block.EnumBlockSupport")
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ public interface NetworkManager {
|
||||
|
||||
Channel getChannel(Player player);
|
||||
|
||||
Collection<? extends NetWorkUser> onlineUsers();
|
||||
NetWorkUser[] onlineUsers();
|
||||
|
||||
void init();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user