Skip to content

Commit

Permalink
truly 1.19.3
Browse files Browse the repository at this point in the history
  • Loading branch information
BasiqueEvangelist committed Jan 31, 2023
1 parent 5ba6775 commit 1def030
Show file tree
Hide file tree
Showing 11 changed files with 54 additions and 58 deletions.
10 changes: 3 additions & 7 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
plugins {
id 'com.github.johnrengelman.shadow' version '7.1.2'
id 'java'
id 'fabric-loom' version '0.12-SNAPSHOT'
id 'io.github.juuxel.loom-quiltflower' version '1.7.2'
id 'fabric-loom' version '1.1-SNAPSHOT'
id 'io.github.juuxel.loom-quiltflower' version '1.8.0'
id 'maven-publish'
}

Expand Down Expand Up @@ -50,7 +50,7 @@ dependencies {

modLocalRuntime "com.terraformersmc:modmenu:${project.modmenu_version}"

modImplementation include('me.lucko:fabric-permissions-api:0.1-SNAPSHOT')
modImplementation include('me.lucko:fabric-permissions-api:0.2-SNAPSHOT')
shadow implementation("blue.endless:jankson:1.2.0")

modImplementation include('me.basiqueevangelist:onedatastore:0.1.2+1.19') {
Expand All @@ -66,10 +66,6 @@ remapJar {
inputFile.set shadowJar.archiveFile.get()
}

prepareRemapJar {
dependsOn "shadowJar"
}

shadowJar {
configurations = [project.configurations.shadow]

Expand Down
10 changes: 5 additions & 5 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@ org.gradle.jvmargs=-Xmx1G

# Fabric Properties
# check these on https://fabricmc.net/develop
minecraft_version=1.19.2
yarn_mappings=1.19.2+build.20
loader_version=0.14.9
minecraft_version=1.19.3
yarn_mappings=1.19.3+build.5
loader_version=0.14.13

# Mod Properties
mod_version = 1.3.1
maven_group = me.basiqueevangelist
archives_base_name = pingspam

# Dependencies
fabric_version=0.62.0+1.19.2
modmenu_version=4.0.6
fabric_version=0.73.0+1.19.3
modmenu_version=5.0.2
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@
import me.basiqueevangelist.pingspam.data.PingspamPlayerData;
import net.minecraft.command.argument.IdentifierArgumentType;
import net.minecraft.command.suggestion.SuggestionProviders;
import net.minecraft.registry.Registries;
import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.sound.SoundEvent;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;

import static net.minecraft.server.command.CommandManager.argument;
import static net.minecraft.server.command.CommandManager.literal;
Expand All @@ -41,7 +41,7 @@ private static int setPingSound(CommandContext<ServerCommandSource> ctx) throws
ServerPlayerEntity player = src.getPlayerOrThrow();
PingspamPlayerData data = DataStore.getFor(src.getServer()).getPlayer(player.getUuid(), PingSpam.PLAYER_DATA);
Identifier soundId = IdentifierArgumentType.getIdentifier(ctx, "sound");
SoundEvent event = Registry.SOUND_EVENT.getOrEmpty(soundId).orElseThrow(INVALID_SOUND::create);
SoundEvent event = Registries.SOUND_EVENT.getOrEmpty(soundId).orElseThrow(INVALID_SOUND::create);

data.setPingSound(event);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,14 @@
import me.basiqueevangelist.pingspam.PingSpam;
import me.basiqueevangelist.pingspam.utils.CaseInsensitiveUtil;
import me.basiqueevangelist.pingspam.utils.OfflineUtil;
import net.fabricmc.fabric.api.util.NbtType;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.nbt.NbtElement;
import net.minecraft.nbt.NbtHelper;
import net.minecraft.nbt.NbtList;
import net.minecraft.registry.Registries;
import net.minecraft.sound.SoundEvents;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand Down Expand Up @@ -63,7 +62,7 @@ public void wasMissing() {
}

if (tag.contains("IgnoredPlayers")) {
NbtList ignoredPlayerListTag = tag.getList("IgnoredPlayers", NbtType.INT_ARRAY);
NbtList ignoredPlayerListTag = tag.getList("IgnoredPlayers", NbtElement.INT_ARRAY_TYPE);
for (NbtElement ignoredPlayerTag : ignoredPlayerListTag) {
data.ignoredPlayers().add(NbtHelper.toUuid(ignoredPlayerTag));
}
Expand All @@ -73,7 +72,7 @@ public void wasMissing() {
if (tag.getString("PingSound").equals("null")) {
data.setPingSound(null);
} else {
data.setPingSound(Registry.SOUND_EVENT.getOrEmpty(new Identifier(tag.getString("PingSound"))).orElse(SoundEvents.BLOCK_BELL_USE));
data.setPingSound(Registries.SOUND_EVENT.getOrEmpty(new Identifier(tag.getString("PingSound"))).orElse(SoundEvents.BLOCK_BELL_USE));
}
}
} catch (Exception e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,12 @@

import me.basiqueevangelist.onedatastore.api.ComponentInstance;
import me.basiqueevangelist.pingspam.utils.CaseInsensitiveUtil;
import net.fabricmc.fabric.api.util.NbtType;
import net.minecraft.nbt.*;
import net.minecraft.registry.Registries;
import net.minecraft.sound.SoundEvent;
import net.minecraft.sound.SoundEvents;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;
import org.jetbrains.annotations.Nullable;

import java.util.ArrayList;
Expand Down Expand Up @@ -58,18 +57,18 @@ public void fromTag(NbtCompound tag) {
}

if (tag.contains("IgnoredPlayers")) {
NbtList ignoredPlayerListTag = tag.getList("IgnoredPlayers", NbtType.INT_ARRAY);
NbtList ignoredPlayerListTag = tag.getList("IgnoredPlayers", NbtElement.INT_ARRAY_TYPE);
for (NbtElement ignoredPlayerTag : ignoredPlayerListTag) {
ignoredPlayers.add(NbtHelper.toUuid(ignoredPlayerTag));
}
}

if (tag.contains("PingSound", NbtType.STRING)) {
if (tag.contains("PingSound", NbtElement.STRING_TYPE)) {
var soundText = tag.getString("PingSound");
if (soundText.equals("null")) {
pingSound = null;
} else {
pingSound = Registry.SOUND_EVENT.getOrEmpty(new Identifier(soundText)).orElse(SoundEvents.BLOCK_BELL_USE);
pingSound = Registries.SOUND_EVENT.getOrEmpty(new Identifier(soundText)).orElse(SoundEvents.BLOCK_BELL_USE);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package me.basiqueevangelist.pingspam.mixin;

import me.basiqueevangelist.pingspam.utils.MessageTypeTransformer;
import net.minecraft.registry.CombinedDynamicRegistries;
import net.minecraft.registry.ServerDynamicRegistryType;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.registry.DynamicRegistryManager;
import net.minecraft.world.SaveProperties;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
Expand All @@ -13,12 +13,10 @@

@Mixin(MinecraftServer.class)
public abstract class MinecraftServerMixin {
@Shadow @Final protected SaveProperties saveProperties;

@Shadow public abstract DynamicRegistryManager.Immutable getRegistryManager();
@Shadow @Final private CombinedDynamicRegistries<ServerDynamicRegistryType> combinedDynamicRegistries;

@Inject(method = "<init>", at = @At(value = "RETURN"))
private void finalizeWorldGen(CallbackInfo ci) {
MessageTypeTransformer.run(getRegistryManager());
MessageTypeTransformer.run(combinedDynamicRegistries.getCombinedRegistryManager());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,18 @@
import me.basiqueevangelist.pingspam.utils.MessageTypeTransformer;
import me.basiqueevangelist.pingspam.utils.PingLogic;
import net.minecraft.network.ClientConnection;
import net.minecraft.network.message.MessageSourceProfile;
import net.minecraft.network.message.MessageType;
import net.minecraft.network.message.SentMessage;
import net.minecraft.network.message.SignedMessage;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.PlayerManager;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.text.Decoration;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import net.minecraft.util.Util;
import net.minecraft.util.registry.Registry;
import net.minecraft.util.registry.RegistryKey;
import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
Expand All @@ -42,8 +40,8 @@ public void onPlayerConnected(ClientConnection conn, ServerPlayerEntity player,
ServerNetworkLogic.sendServerAnnouncement(player, conn);
}

@Inject(method = "broadcast(Lnet/minecraft/network/message/SignedMessage;Ljava/util/function/Predicate;Lnet/minecraft/server/network/ServerPlayerEntity;Lnet/minecraft/network/message/MessageSourceProfile;Lnet/minecraft/network/message/MessageType$Parameters;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/MinecraftServer;logChatMessage(Lnet/minecraft/text/Text;Lnet/minecraft/network/message/MessageType$Parameters;Ljava/lang/String;)V", shift = At.Shift.AFTER))
public void processPingSigned(SignedMessage message, Predicate<ServerPlayerEntity> shouldSendFiltered, @Nullable ServerPlayerEntity sender, MessageSourceProfile sourceProfile, MessageType.Parameters params, CallbackInfo ci) {
@Inject(method = "broadcast(Lnet/minecraft/network/message/SignedMessage;Ljava/util/function/Predicate;Lnet/minecraft/server/network/ServerPlayerEntity;Lnet/minecraft/network/message/MessageType$Parameters;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/MinecraftServer;logChatMessage(Lnet/minecraft/text/Text;Lnet/minecraft/network/message/MessageType$Parameters;Ljava/lang/String;)V", shift = At.Shift.AFTER))
public void processPingSigned(SignedMessage message, Predicate<ServerPlayerEntity> shouldSendFiltered, ServerPlayerEntity sender, MessageType.Parameters params, CallbackInfo ci) {
Decoration rule = params.type().chat();
UUID uuid = sender == null ? Util.NIL_UUID : sender.getUuid();

Expand All @@ -57,17 +55,17 @@ private void deletePing(CallbackInfo ci) {
pong = null;
}

@Redirect(method = "broadcast(Lnet/minecraft/network/message/SignedMessage;Ljava/util/function/Predicate;Lnet/minecraft/server/network/ServerPlayerEntity;Lnet/minecraft/network/message/MessageSourceProfile;Lnet/minecraft/network/message/MessageType$Parameters;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/network/ServerPlayerEntity;sendChatMessage(Lnet/minecraft/network/message/SentMessage;ZLnet/minecraft/network/message/MessageType$Parameters;)V"))
@Redirect(method = "broadcast(Lnet/minecraft/network/message/SignedMessage;Ljava/util/function/Predicate;Lnet/minecraft/server/network/ServerPlayerEntity;Lnet/minecraft/network/message/MessageType$Parameters;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/network/ServerPlayerEntity;sendChatMessage(Lnet/minecraft/network/message/SentMessage;ZLnet/minecraft/network/message/MessageType$Parameters;)V"))
private void sendMessageSigned(ServerPlayerEntity player, SentMessage message, boolean filterMaskEnabled, MessageType.Parameters params) {
if (pong != null && pong.pingSucceeded) {
var typeRegistry = server.getRegistryManager().get(Registry.MESSAGE_TYPE_KEY);
var typeRegistry = server.getRegistryManager().get(RegistryKeys.MESSAGE_TYPE);
var oldKey = typeRegistry.getKey(params.type()).orElseThrow();
RegistryKey<MessageType> newKey = null;

if (pong.pingedPlayers.contains(player.getUuid())) {
newKey = RegistryKey.of(Registry.MESSAGE_TYPE_KEY, MessageTypeTransformer.wrapPinged(oldKey.getValue()));
newKey = RegistryKey.of(RegistryKeys.MESSAGE_TYPE, MessageTypeTransformer.wrapPinged(oldKey.getValue()));
} else if (pong.sender == player) {
newKey = RegistryKey.of(Registry.MESSAGE_TYPE_KEY, MessageTypeTransformer.wrapPingSuccessful(oldKey.getValue()));
newKey = RegistryKey.of(RegistryKeys.MESSAGE_TYPE, MessageTypeTransformer.wrapPingSuccessful(oldKey.getValue()));
pong.pingedPlayers.add(pong.sender.getUuid());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import me.basiqueevangelist.pingspam.PingSpam;
import me.basiqueevangelist.pingspam.data.PingspamPlayerData;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.network.encryption.PlayerPublicKey;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.server.world.ServerWorld;
Expand All @@ -14,7 +13,6 @@
import net.minecraft.text.Text;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
Expand All @@ -26,8 +24,8 @@
public abstract class ServerPlayerEntityMixin extends PlayerEntity {
@Unique private static final int ACTIONBAR_TIME = 10;

public ServerPlayerEntityMixin(World world, BlockPos pos, float yaw, GameProfile gameProfile, @Nullable PlayerPublicKey publicKey) {
super(world, pos, yaw, gameProfile, publicKey);
public ServerPlayerEntityMixin(World world, BlockPos pos, float yaw, GameProfile gameProfile) {
super(world, pos, yaw, gameProfile);
}

@Shadow public abstract void playSound(SoundEvent event, SoundCategory category, float volume, float pitch);
Expand All @@ -39,7 +37,7 @@ public ServerPlayerEntityMixin(World world, BlockPos pos, float yaw, GameProfile
@Unique private int actionbarTime = 0;

@Inject(method = "<init>", at = @At("RETURN"))
private void loadPingspamData(MinecraftServer server, ServerWorld world, GameProfile profile, PlayerPublicKey publicKey, CallbackInfo ci) {
private void loadPingspamData(MinecraftServer server, ServerWorld world, GameProfile profile, CallbackInfo ci) {
if (isImpostor()) return;

pingspamData = DataStore.getFor(server).getPlayer(uuid, PingSpam.PLAYER_DATA);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,35 +1,42 @@
package me.basiqueevangelist.pingspam.mixin;

import com.mojang.serialization.Lifecycle;
import me.basiqueevangelist.pingspam.access.ExtendedRegistry;
import net.minecraft.util.registry.RegistryEntry;
import net.minecraft.util.registry.SimpleRegistry;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.SimpleRegistry;
import net.minecraft.registry.entry.RegistryEntry;
import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

import java.util.IdentityHashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;

@Mixin(SimpleRegistry.class)
public class SimpleRegistryMixin<T> implements ExtendedRegistry {
private boolean pingspam$intrusive;

@Shadow private boolean frozen;
@Shadow private @Nullable List<RegistryEntry.Reference<T>> cachedEntries;

@Shadow @Final private @Nullable Function<T, RegistryEntry.Reference<T>> valueToEntryFunction;
@Shadow @Nullable private Map<T, RegistryEntry.Reference<T>> intrusiveValueToEntry;

@Shadow private @Nullable Map<T, RegistryEntry.Reference<T>> unfrozenValueToEntry;
@Shadow private boolean frozen;

@Shadow private @Nullable List<RegistryEntry.Reference<T>> cachedEntries;
@Inject(method = "<init>(Lnet/minecraft/registry/RegistryKey;Lcom/mojang/serialization/Lifecycle;Z)V", at = @At("TAIL"))
private void saveIntrusiveness(RegistryKey<?> key, Lifecycle lifecycle, boolean intrusive, CallbackInfo ci) {
pingspam$intrusive = intrusive;
}

@Override
public void pingspam$unfreeze() {
frozen = false;

if (valueToEntryFunction != null)
this.unfrozenValueToEntry = new IdentityHashMap<>();
if (pingspam$intrusive)
this.intrusiveValueToEntry = new IdentityHashMap<>();

cachedEntries = null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,21 @@

import me.basiqueevangelist.pingspam.access.ExtendedRegistry;
import net.minecraft.network.message.MessageType;
import net.minecraft.registry.DynamicRegistryManager;
import net.minecraft.registry.Registry;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.text.Decoration;
import net.minecraft.text.Style;
import net.minecraft.util.Formatting;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.DynamicRegistryManager;
import net.minecraft.util.registry.Registry;

import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;

public class MessageTypeTransformer {
public static void run(DynamicRegistryManager drm) {
Registry<MessageType> reg = drm.get(Registry.MESSAGE_TYPE_KEY);
Registry<MessageType> reg = drm.get(RegistryKeys.MESSAGE_TYPE);

Map<Identifier, MessageType> addedTypes = new HashMap<>();

Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
"depends": {
"fabricloader": ">=0.7.4",
"fabric": "*",
"minecraft": "1.19.x >=1.19.1",
"minecraft": "1.19.3",
"fabric-permissions-api-v0": "*",
"onedatastore": ">=0.1.2"
}
Expand Down

0 comments on commit 1def030

Please sign in to comment.