Support minecraft 1.19 (not tested)

This commit is contained in:
Clovis de Villars 2022-06-02 16:51:25 +02:00
parent 6de4f2ff2f
commit ccb18cd488
No known key found for this signature in database
GPG Key ID: 788F45139F3E5CAD
7 changed files with 25 additions and 27 deletions

View File

@ -96,7 +96,7 @@ public class DynmapPlugin {
plugin = this;
// Fabric events persist between server instances
ServerLifecycleEvents.SERVER_STARTING.register(this::serverStart);
CommandRegistrationCallback.EVENT.register((dispatcher, dedicated) -> registerCommands(dispatcher));
CommandRegistrationCallback.EVENT.register((dispatcher,registryAccess, environment) -> registerCommands(dispatcher));
CustomServerLifecycleEvents.SERVER_STARTED_PRE_WORLD_LOAD.register(this::serverStarted);
ServerLifecycleEvents.SERVER_STOPPING.register(this::serverStop);
}
@ -267,8 +267,7 @@ public class DynmapPlugin {
}
}
// TODO: Consider whether cheats are enabled for integrated server
return server.isSingleplayer() && player.equalsIgnoreCase(server.getSinglePlayerName());
return false;
}
boolean hasPerm(PlayerEntity psender, String permission) {

View File

@ -1,7 +1,6 @@
package org.dynmap.fabric_1_19;
import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.text.LiteralTextContent;
import net.minecraft.text.Text;
import org.dynmap.common.DynmapCommandSender;
@ -25,7 +24,7 @@ public class FabricCommandSender implements DynmapCommandSender {
@Override
public void sendMessage(String msg) {
if (sender != null) {
Text ichatcomponent = new LiteralTextContent(msg);
Text ichatcomponent = Text.of(msg);
sender.sendFeedback(ichatcomponent, false);
}
}

View File

@ -83,7 +83,7 @@ public class FabricMapChunkCache extends GenericMapChunkCache {
ThreadedAnvilChunkStorage acl = cps.threadedAnvilChunkStorage;
ChunkPos coord = new ChunkPos(x, z);
return acl.getNbt(coord);
return acl.getNbt(coord).get().get();
} catch (Exception exc) {
Log.severe(String.format("Error reading chunk: %s,%d,%d", dw.getName(), x, z), exc);
return null;

View File

@ -12,7 +12,6 @@ import net.minecraft.network.packet.s2c.play.TitleFadeS2CPacket;
import net.minecraft.network.packet.s2c.play.TitleS2CPacket;
import net.minecraft.server.network.ServerPlayNetworkHandler;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.text.LiteralTextContent;
import net.minecraft.text.Text;
import net.minecraft.util.Util;
import net.minecraft.util.math.Vec3d;
@ -188,8 +187,8 @@ public class FabricPlayer extends FabricCommandSender implements DynmapPlayer {
@Override
public void sendMessage(String msg) {
Text ichatcomponent = new LiteralTextContent(msg);
player.sendSystemMessage(ichatcomponent, Util.NIL_UUID);
Text ichatcomponent = Text.of(msg);
player.sendMessage(ichatcomponent);
}
@Override
@ -239,12 +238,12 @@ public class FabricPlayer extends FabricCommandSender implements DynmapPlayer {
TitleFadeS2CPacket times = new TitleFadeS2CPacket(fadeInTicks, stayTicks, fadeOutTicks);
player.networkHandler.sendPacket(times);
if (title != null) {
TitleS2CPacket titlepkt = new TitleS2CPacket(new LiteralTextContent(title));
TitleS2CPacket titlepkt = new TitleS2CPacket(Text.of(title));
player.networkHandler.sendPacket(titlepkt);
}
if (subtitle != null) {
SubtitleS2CPacket subtitlepkt = new SubtitleS2CPacket(new LiteralTextContent(subtitle));
SubtitleS2CPacket subtitlepkt = new SubtitleS2CPacket(Text.of(subtitle));
player.networkHandler.sendPacket(subtitlepkt);
}
}

View File

@ -12,7 +12,6 @@ import net.minecraft.server.BannedPlayerList;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.PlayerManager;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.text.LiteralTextContent;
import net.minecraft.text.Text;
import net.minecraft.util.UserCache;
import net.minecraft.util.Util;
@ -272,7 +271,7 @@ public class FabricServer extends DynmapServerInterface {
case SIGN_CHANGE:
BlockEvents.SIGN_CHANGE_EVENT.register((world, pos, lines, material, player) -> {
plugin.core.processSignChange("fabric", FabricWorld.getWorldName(plugin, world),
pos.getX(), pos.getY(), pos.getZ(), lines, player.getName().asString());
pos.getX(), pos.getY(), pos.getZ(), lines, player.getName().getString());
});
break;
@ -292,8 +291,8 @@ public class FabricServer extends DynmapServerInterface {
@Override
public void broadcastMessage(String msg) {
Text component = new LiteralTextContent(msg);
server.getPlayerManager().broadcast(component, MessageType.SYSTEM, Util.NIL_UUID);
Text component = Text.of(msg);
server.getPlayerManager().broadcast(component, MessageType.SYSTEM);
Log.info(stripChatColor(msg));
}

View File

@ -6,6 +6,7 @@ import net.minecraft.world.Heightmap;
import net.minecraft.world.LightType;
import net.minecraft.world.World;
import net.minecraft.world.border.WorldBorder;
import net.minecraft.client.render.LightmapTextureManager;
import org.dynmap.DynmapChunk;
import org.dynmap.DynmapLocation;
import org.dynmap.DynmapWorld;
@ -49,7 +50,7 @@ public class FabricWorld extends DynmapWorld {
}
public void updateWorld(World w) {
this.updateWorldHeights(w.getHeight(), w.getDimension().getMinimumY(), w.getSeaLevel());
this.updateWorldHeights(w.getHeight(), w.getDimension().minY(), w.getSeaLevel());
}
public FabricWorld(DynmapPlugin plugin, World w) {
@ -58,12 +59,12 @@ public class FabricWorld extends DynmapWorld {
w.getRegistryKey() == World.NETHER,
w.getRegistryKey() == World.END,
w.getRegistryKey().getValue().getPath(),
w.getDimension().getMinimumY());
w.getDimension().minY());
setWorldLoaded(w);
}
public FabricWorld(DynmapPlugin plugin, String name, int height, int sealevel, boolean nether, boolean the_end, String deftitle, int miny) {
super(name, (height > maxWorldHeight) ? maxWorldHeight : height, sealevel, miny);
super(name, Math.min(height, maxWorldHeight), sealevel, miny);
this.plugin = plugin;
world = null;
setTitle(deftitle);
@ -149,7 +150,7 @@ public class FabricWorld extends DynmapWorld {
this.sealevel = w.getSeaLevel(); // Read actual current sealevel from world
// Update lighting table
for (int i = 0; i < 16; i++) {
this.setBrightnessTableEntry(i, w.getDimension().getBrightness(i));
this.setBrightnessTableEntry(i, LightmapTextureManager.getBrightness(w.getDimension(), i));
}
}

View File

@ -4,11 +4,12 @@ import net.minecraft.block.BlockState;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.block.entity.SignBlockEntity;
import net.minecraft.network.packet.c2s.play.UpdateSignC2SPacket;
import net.minecraft.server.filter.TextStream;
import net.minecraft.server.filter.FilteredMessage;
import net.minecraft.server.network.ServerPlayNetworkHandler;
import net.minecraft.network.packet.c2s.play.ChatMessageC2SPacket;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.text.LiteralTextContent;
import net.minecraft.text.Text;
import net.minecraft.util.math.BlockPos;
import java.util.List;
@ -31,12 +32,12 @@ public abstract class ServerPlayNetworkHandlerMixin {
method = "handleMessage",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/server/PlayerManager;broadcast(Lnet/minecraft/text/Text;Ljava/util/function/Function;Lnet/minecraft/network/MessageType;Ljava/util/UUID;)V",
target = "Lnet/minecraft/server/network/ServerPlayNetworkHandler;handleMessage(Lnet/minecraft/network/packet/c2s/play/ChatMessageC2SPacket;Lnet/minecraft/server/filter/FilteredMessage;)V",
shift = At.Shift.BEFORE
)
)
public void onGameMessage(TextStream.Message message, CallbackInfo info) {
ServerChatEvents.EVENT.invoker().onChatMessage(player, message.getRaw());
public void onGameMessage(ChatMessageC2SPacket packet, FilteredMessage<String> message, CallbackInfo info) {
ServerChatEvents.EVENT.invoker().onChatMessage(player, message.raw());
}
@Inject(
@ -48,19 +49,19 @@ public abstract class ServerPlayNetworkHandlerMixin {
),
locals = LocalCapture.CAPTURE_FAILHARD
)
public void onSignUpdate(UpdateSignC2SPacket packet, List<TextStream.Message> signText, CallbackInfo info,
public void onSignUpdate(UpdateSignC2SPacket packet, List<FilteredMessage<String>> signText, CallbackInfo info,
ServerWorld serverWorld, BlockPos blockPos, BlockState blockState, BlockEntity blockEntity, SignBlockEntity signBlockEntity)
{
// Pull the raw text from the input.
String[] rawTexts = new String[4];
for (int i=0; i<signText.size(); i++)
rawTexts[i] = signText.get(i).getRaw();
rawTexts[i] = signText.get(i).raw();
// Fire the event.
BlockEvents.SIGN_CHANGE_EVENT.invoker().onSignChange(serverWorld, blockPos, rawTexts, blockState.getMaterial(), player);
// Put the (possibly updated) texts in the sign. Ignore filtering (is this OK?).
for (int i=0; i<signText.size(); i++)
signBlockEntity.setTextOnRow(i, new LiteralTextContent(rawTexts[i]));
signBlockEntity.setTextOnRow(i, Text.of(rawTexts[i]));
}
}