From 6a1b9f014beb9e7cc13c0097fabd71957b499219 Mon Sep 17 00:00:00 2001 From: qouteall Date: Sat, 6 Jun 2020 15:44:44 +0800 Subject: [PATCH 01/12] Add FakePlayer --- .../common/util/FakePlayer.java | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayer.java diff --git a/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayer.java b/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayer.java new file mode 100644 index 00000000..31a4bad8 --- /dev/null +++ b/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayer.java @@ -0,0 +1,79 @@ +/* + * Minecraft Forge, Patchwork Project + * Copyright (c) 2016-2020, 2019-2020 + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation version 2.1 + * of the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +package net.minecraftforge.common.util; + +import com.mojang.authlib.GameProfile; + +import net.minecraft.entity.damage.DamageSource; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.network.packet.c2s.play.ClientSettingsC2SPacket; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.server.network.ServerPlayerInteractionManager; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.stat.Stat; +import net.minecraft.text.Text; +import net.minecraft.util.math.Vec3d; + +//Preliminary, simple Fake Player class +public class FakePlayer extends ServerPlayerEntity { + public FakePlayer(ServerWorld world, GameProfile name) { + super(world.getServer(), world, name, new ServerPlayerInteractionManager(world)); + } + + @Override + public Vec3d getPosVector() { + return new Vec3d(0, 0, 0); + } + + @Override + public void addChatMessage(Text chatComponent, boolean actionBar) { + } + + @Override + public void sendMessage(Text component) { + } + + @Override + public void increaseStat(Stat par1StatBase, int par2) { + } + + //@Override public void openGui(Object mod, int modGuiId, World world, int x, int y, int z){} + @Override + public boolean isInvulnerableTo(DamageSource source) { + return true; + } + + @Override + public boolean shouldDamagePlayer(PlayerEntity player) { + return false; + } + + @Override + public void onDeath(DamageSource source) { + } + + @Override + public void tick() { + } + + @Override + public void setClientSettings(ClientSettingsC2SPacket pkt) { + } +} From eeb79f53105db2d0e577c5e9f5b211fb73318924 Mon Sep 17 00:00:00 2001 From: qouteall Date: Wed, 10 Jun 2020 17:15:02 +0800 Subject: [PATCH 02/12] Add FakePlayerFactory --- .../common/util/FakePlayer.java | 11 ++- .../common/util/FakePlayerFactory.java | 75 +++++++++++++++++++ .../MixinPlayerAdvancementTracker.java | 25 +++++++ .../patchwork-extensions.mixins.json | 1 + 4 files changed, 106 insertions(+), 6 deletions(-) create mode 100644 patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayerFactory.java create mode 100644 patchwork-extensions/src/main/java/net/patchworkmc/mixin/extension/MixinPlayerAdvancementTracker.java diff --git a/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayer.java b/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayer.java index 31a4bad8..17f96dae 100644 --- a/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayer.java +++ b/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayer.java @@ -33,8 +33,8 @@ //Preliminary, simple Fake Player class public class FakePlayer extends ServerPlayerEntity { - public FakePlayer(ServerWorld world, GameProfile name) { - super(world.getServer(), world, name, new ServerPlayerInteractionManager(world)); + public FakePlayer(ServerWorld world, GameProfile profile) { + super(world.getServer(), world, profile, new ServerPlayerInteractionManager(world)); } @Override @@ -43,7 +43,7 @@ public Vec3d getPosVector() { } @Override - public void addChatMessage(Text chatComponent, boolean actionBar) { + public void addChatMessage(Text text, boolean actionBar) { } @Override @@ -51,10 +51,9 @@ public void sendMessage(Text component) { } @Override - public void increaseStat(Stat par1StatBase, int par2) { + public void increaseStat(Stat stat, int num) { } - //@Override public void openGui(Object mod, int modGuiId, World world, int x, int y, int z){} @Override public boolean isInvulnerableTo(DamageSource source) { return true; @@ -74,6 +73,6 @@ public void tick() { } @Override - public void setClientSettings(ClientSettingsC2SPacket pkt) { + public void setClientSettings(ClientSettingsC2SPacket packet) { } } diff --git a/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayerFactory.java b/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayerFactory.java new file mode 100644 index 00000000..61eef386 --- /dev/null +++ b/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayerFactory.java @@ -0,0 +1,75 @@ +/* + * Minecraft Forge, Patchwork Project + * Copyright (c) 2016-2020, 2019-2020 + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation version 2.1 + * of the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +package net.minecraftforge.common.util; + +import java.lang.ref.WeakReference; +import java.util.Map; +import java.util.UUID; + +import com.google.common.collect.Maps; +import com.mojang.authlib.GameProfile; + +import net.minecraft.server.world.ServerWorld; + +//To be expanded for generic Mod fake players? +public class FakePlayerFactory { + private static GameProfile MINECRAFT = new GameProfile(UUID.fromString("41C82C87-7AfB-4024-BA57-13D2C99CAE77"), "[Minecraft]"); + // Map of all active fake player usernames to their entities + private static Map fakePlayers = Maps.newHashMap(); + private static WeakReference MINECRAFT_PLAYER = null; + + public static FakePlayer getMinecraft(ServerWorld world) { + FakePlayer ret = MINECRAFT_PLAYER != null ? MINECRAFT_PLAYER.get() : null; + + if (ret == null) { + ret = FakePlayerFactory.get(world, MINECRAFT); + MINECRAFT_PLAYER = new WeakReference(ret); + } + + return ret; + } + + /** + * Get a fake player with a given username, + * Mods should either hold weak references to the return value, or listen for a + * WorldEvent.Unload and kill all references to prevent worlds staying in memory. + */ + public static FakePlayer get(ServerWorld world, GameProfile username) { + if (!fakePlayers.containsKey(username)) { + FakePlayer fakePlayer = new FakePlayer(world, username); + fakePlayers.put(username, fakePlayer); + } + + return fakePlayers.get(username); + } + + public static void unloadWorld(ServerWorld world) { + fakePlayers.entrySet().removeIf(entry -> entry.getValue().world == world); + + // This shouldn't be strictly necessary, but lets be aggressive. + if (MINECRAFT_PLAYER != null && MINECRAFT_PLAYER.get() != null && MINECRAFT_PLAYER.get().world == world) { + FakePlayer mc = MINECRAFT_PLAYER.get(); + + if (mc != null && mc.world == world) { + MINECRAFT_PLAYER = null; + } + } + } +} diff --git a/patchwork-extensions/src/main/java/net/patchworkmc/mixin/extension/MixinPlayerAdvancementTracker.java b/patchwork-extensions/src/main/java/net/patchworkmc/mixin/extension/MixinPlayerAdvancementTracker.java new file mode 100644 index 00000000..8913e42a --- /dev/null +++ b/patchwork-extensions/src/main/java/net/patchworkmc/mixin/extension/MixinPlayerAdvancementTracker.java @@ -0,0 +1,25 @@ +package net.patchworkmc.mixin.extension; + +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.CallbackInfoReturnable; +import net.minecraftforge.common.util.FakePlayer; + +import net.minecraft.advancement.Advancement; +import net.minecraft.advancement.PlayerAdvancementTracker; +import net.minecraft.server.network.ServerPlayerEntity; + +@Mixin(PlayerAdvancementTracker.class) +public class MixinPlayerAdvancementTracker { + @Shadow + private ServerPlayerEntity owner; + + @Inject(method = "grantCriterion", at = @At("HEAD"), cancellable = true) + private void onGrantCriterion(Advancement advancement, String criterion, CallbackInfoReturnable cir) { + if (owner instanceof FakePlayer) { + cir.setReturnValue(false); + } + } +} diff --git a/patchwork-extensions/src/main/resources/patchwork-extensions.mixins.json b/patchwork-extensions/src/main/resources/patchwork-extensions.mixins.json index 2e791eb6..a69da812 100644 --- a/patchwork-extensions/src/main/resources/patchwork-extensions.mixins.json +++ b/patchwork-extensions/src/main/resources/patchwork-extensions.mixins.json @@ -5,6 +5,7 @@ "mixins": [ "MixinEntityType", "MixinEntityTypeBuilder", + "MixinPlayerAdvancementTracker", "MixinStatusEffect" ], "injectors": { From bb6d904c81ad018cf33544b33ff5a20d9ce21d40 Mon Sep 17 00:00:00 2001 From: qouteall Date: Thu, 11 Jun 2020 17:45:05 +0800 Subject: [PATCH 03/12] Invoke FakePlayerFactory#unloadWorld --- .../common/util/FakePlayerFactory.java | 1 - .../impl/extension/PatchworkExtensions.java | 19 +++++++++++++++++++ .../src/main/resources/fabric.mod.json | 5 +++++ 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 patchwork-extensions/src/main/java/net/patchworkmc/impl/extension/PatchworkExtensions.java diff --git a/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayerFactory.java b/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayerFactory.java index 61eef386..c659ea15 100644 --- a/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayerFactory.java +++ b/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayerFactory.java @@ -28,7 +28,6 @@ import net.minecraft.server.world.ServerWorld; -//To be expanded for generic Mod fake players? public class FakePlayerFactory { private static GameProfile MINECRAFT = new GameProfile(UUID.fromString("41C82C87-7AfB-4024-BA57-13D2C99CAE77"), "[Minecraft]"); // Map of all active fake player usernames to their entities diff --git a/patchwork-extensions/src/main/java/net/patchworkmc/impl/extension/PatchworkExtensions.java b/patchwork-extensions/src/main/java/net/patchworkmc/impl/extension/PatchworkExtensions.java new file mode 100644 index 00000000..fe133756 --- /dev/null +++ b/patchwork-extensions/src/main/java/net/patchworkmc/impl/extension/PatchworkExtensions.java @@ -0,0 +1,19 @@ +package net.patchworkmc.impl.extension; + +import net.minecraftforge.common.util.FakePlayerFactory; + +import net.minecraft.server.world.ServerWorld; + +import net.fabricmc.api.ModInitializer; +import net.fabricmc.fabric.api.event.server.ServerStopCallback; + +public class PatchworkExtensions implements ModInitializer { + @Override + public void onInitialize() { + ServerStopCallback.EVENT.register(server -> { + for (ServerWorld world : server.getWorlds()) { + FakePlayerFactory.unloadWorld(world); + } + }); + } +} diff --git a/patchwork-extensions/src/main/resources/fabric.mod.json b/patchwork-extensions/src/main/resources/fabric.mod.json index 89c4cb58..03279975 100644 --- a/patchwork-extensions/src/main/resources/fabric.mod.json +++ b/patchwork-extensions/src/main/resources/fabric.mod.json @@ -17,6 +17,11 @@ "mixins": [ "patchwork-extensions.mixins.json" ], + "entrypoints": { + "main": [ + "net.patchworkmc.impl.extension.PatchworkExtensions" + ] + }, "custom": { "modmenu:api": true, "modmenu:parent": "patchwork" From dcd6d64c2cc4b8a944e5aeeccb5630db1f3dd0fa Mon Sep 17 00:00:00 2001 From: qouteall Date: Thu, 11 Jun 2020 17:53:10 +0800 Subject: [PATCH 04/12] Fix license --- .../impl/extension/PatchworkExtensions.java | 19 +++++++++++++++++++ .../MixinPlayerAdvancementTracker.java | 19 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/patchwork-extensions/src/main/java/net/patchworkmc/impl/extension/PatchworkExtensions.java b/patchwork-extensions/src/main/java/net/patchworkmc/impl/extension/PatchworkExtensions.java index fe133756..a34ffebe 100644 --- a/patchwork-extensions/src/main/java/net/patchworkmc/impl/extension/PatchworkExtensions.java +++ b/patchwork-extensions/src/main/java/net/patchworkmc/impl/extension/PatchworkExtensions.java @@ -1,3 +1,22 @@ +/* + * Minecraft Forge, Patchwork Project + * Copyright (c) 2016-2020, 2019-2020 + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation version 2.1 + * of the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + package net.patchworkmc.impl.extension; import net.minecraftforge.common.util.FakePlayerFactory; diff --git a/patchwork-extensions/src/main/java/net/patchworkmc/mixin/extension/MixinPlayerAdvancementTracker.java b/patchwork-extensions/src/main/java/net/patchworkmc/mixin/extension/MixinPlayerAdvancementTracker.java index 8913e42a..6f353c11 100644 --- a/patchwork-extensions/src/main/java/net/patchworkmc/mixin/extension/MixinPlayerAdvancementTracker.java +++ b/patchwork-extensions/src/main/java/net/patchworkmc/mixin/extension/MixinPlayerAdvancementTracker.java @@ -1,3 +1,22 @@ +/* + * Minecraft Forge, Patchwork Project + * Copyright (c) 2016-2020, 2019-2020 + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation version 2.1 + * of the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + package net.patchworkmc.mixin.extension; import org.spongepowered.asm.mixin.Mixin; From 30fb2605b8848b59ec75f413ef0ad67a9b4c892b Mon Sep 17 00:00:00 2001 From: williambl Date: Mon, 17 Aug 2020 16:55:40 +0100 Subject: [PATCH 05/12] Improve code quality of `FakePlayerFactory`: - Make some private static fields final - Remove an explicit generic type that was inferrable - Simplify logic in `unloadWorld` to mirror the logic in `getMinecraft` - Add javadoc for `unloadWorld` --- .../common/util/FakePlayerFactory.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayerFactory.java b/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayerFactory.java index c659ea15..be7358d5 100644 --- a/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayerFactory.java +++ b/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayerFactory.java @@ -29,9 +29,9 @@ import net.minecraft.server.world.ServerWorld; public class FakePlayerFactory { - private static GameProfile MINECRAFT = new GameProfile(UUID.fromString("41C82C87-7AfB-4024-BA57-13D2C99CAE77"), "[Minecraft]"); - // Map of all active fake player usernames to their entities - private static Map fakePlayers = Maps.newHashMap(); + private static final GameProfile MINECRAFT = new GameProfile(UUID.fromString("41C82C87-7AfB-4024-BA57-13D2C99CAE77"), "[Minecraft]"); + // Map of all active fake player profiles to their entities + private static final Map fakePlayers = Maps.newHashMap(); private static WeakReference MINECRAFT_PLAYER = null; public static FakePlayer getMinecraft(ServerWorld world) { @@ -39,7 +39,7 @@ public static FakePlayer getMinecraft(ServerWorld world) { if (ret == null) { ret = FakePlayerFactory.get(world, MINECRAFT); - MINECRAFT_PLAYER = new WeakReference(ret); + MINECRAFT_PLAYER = new WeakReference<>(ret); } return ret; @@ -59,16 +59,17 @@ public static FakePlayer get(ServerWorld world, GameProfile username) { return fakePlayers.get(username); } + /** + * Used internally to clean up fake players when worlds are unloaded on server stop. + */ public static void unloadWorld(ServerWorld world) { fakePlayers.entrySet().removeIf(entry -> entry.getValue().world == world); // This shouldn't be strictly necessary, but lets be aggressive. - if (MINECRAFT_PLAYER != null && MINECRAFT_PLAYER.get() != null && MINECRAFT_PLAYER.get().world == world) { - FakePlayer mc = MINECRAFT_PLAYER.get(); + FakePlayer mc = MINECRAFT_PLAYER != null ? MINECRAFT_PLAYER.get() : null; - if (mc != null && mc.world == world) { - MINECRAFT_PLAYER = null; - } + if (mc != null && mc.world == world) { + MINECRAFT_PLAYER = null; } } } From d5ed015a3387a2bd3393ec92f053b8fc4da83887 Mon Sep 17 00:00:00 2001 From: williambl Date: Mon, 17 Aug 2020 17:12:27 +0100 Subject: [PATCH 06/12] Fix formatting in a couple of comments --- .../main/java/net/minecraftforge/common/util/FakePlayer.java | 2 +- .../java/net/minecraftforge/common/util/FakePlayerFactory.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayer.java b/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayer.java index 17f96dae..de91c401 100644 --- a/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayer.java +++ b/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayer.java @@ -31,7 +31,7 @@ import net.minecraft.text.Text; import net.minecraft.util.math.Vec3d; -//Preliminary, simple Fake Player class +// Preliminary, simple Fake Player class public class FakePlayer extends ServerPlayerEntity { public FakePlayer(ServerWorld world, GameProfile profile) { super(world.getServer(), world, profile, new ServerPlayerInteractionManager(world)); diff --git a/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayerFactory.java b/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayerFactory.java index be7358d5..4ad156c7 100644 --- a/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayerFactory.java +++ b/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayerFactory.java @@ -65,7 +65,7 @@ public static FakePlayer get(ServerWorld world, GameProfile username) { public static void unloadWorld(ServerWorld world) { fakePlayers.entrySet().removeIf(entry -> entry.getValue().world == world); - // This shouldn't be strictly necessary, but lets be aggressive. + // This shouldn't be strictly necessary, but let's be aggressive. FakePlayer mc = MINECRAFT_PLAYER != null ? MINECRAFT_PLAYER.get() : null; if (mc != null && mc.world == world) { From e36ac9ca53d234ef45288b3ade6e2e8bff0b44e7 Mon Sep 17 00:00:00 2001 From: williambl Date: Mon, 17 Aug 2020 17:15:44 +0100 Subject: [PATCH 07/12] Improve `FakePlayerFactory#get`: - username -> profile (shouldn't break anything) - switch to using computeIfAbsent --- .../minecraftforge/common/util/FakePlayerFactory.java | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayerFactory.java b/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayerFactory.java index 4ad156c7..2403c7c2 100644 --- a/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayerFactory.java +++ b/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayerFactory.java @@ -46,17 +46,12 @@ public static FakePlayer getMinecraft(ServerWorld world) { } /** - * Get a fake player with a given username, + * Get a fake player with a given profile. * Mods should either hold weak references to the return value, or listen for a * WorldEvent.Unload and kill all references to prevent worlds staying in memory. */ - public static FakePlayer get(ServerWorld world, GameProfile username) { - if (!fakePlayers.containsKey(username)) { - FakePlayer fakePlayer = new FakePlayer(world, username); - fakePlayers.put(username, fakePlayer); - } - - return fakePlayers.get(username); + public static FakePlayer get(ServerWorld world, GameProfile profile) { + return fakePlayers.computeIfAbsent(profile, it -> new FakePlayer(world, it)); } /** From aef4b582bcdbe27ae232fb7260a9635d53857906 Mon Sep 17 00:00:00 2001 From: williambl Date: Mon, 17 Aug 2020 17:29:29 +0100 Subject: [PATCH 08/12] Move fake players into a new module --- .../src/main/resources/fabric.mod.json | 3 -- .../patchwork-extensions.mixins.json | 1 - patchwork-fake-players/build.gradle | 6 ++++ .../common/util/FakePlayer.java | 0 .../common/util/FakePlayerFactory.java | 0 .../fakeplayers/PatchworkFakePlayers.java | 4 +-- .../MixinPlayerAdvancementTracker.java | 2 +- .../assets/patchwork-extensions/icon.png | Bin 0 -> 22738 bytes .../src/main/resources/fabric.mod.json | 29 ++++++++++++++++++ .../patchwork-extensions.mixins.json | 11 +++++++ settings.gradle | 1 + 11 files changed, 50 insertions(+), 7 deletions(-) create mode 100644 patchwork-fake-players/build.gradle rename {patchwork-extensions => patchwork-fake-players}/src/main/java/net/minecraftforge/common/util/FakePlayer.java (100%) rename {patchwork-extensions => patchwork-fake-players}/src/main/java/net/minecraftforge/common/util/FakePlayerFactory.java (100%) rename patchwork-extensions/src/main/java/net/patchworkmc/impl/extension/PatchworkExtensions.java => patchwork-fake-players/src/main/java/net/patchworkmc/impl/fakeplayers/PatchworkFakePlayers.java (91%) rename {patchwork-extensions/src/main/java/net/patchworkmc/mixin/extension => patchwork-fake-players/src/main/java/net/patchworkmc/mixin/fakeplayers}/MixinPlayerAdvancementTracker.java (97%) create mode 100644 patchwork-fake-players/src/main/resources/assets/patchwork-extensions/icon.png create mode 100644 patchwork-fake-players/src/main/resources/fabric.mod.json create mode 100644 patchwork-fake-players/src/main/resources/patchwork-extensions.mixins.json diff --git a/patchwork-extensions/src/main/resources/fabric.mod.json b/patchwork-extensions/src/main/resources/fabric.mod.json index 795bafbe..4e3e25ca 100644 --- a/patchwork-extensions/src/main/resources/fabric.mod.json +++ b/patchwork-extensions/src/main/resources/fabric.mod.json @@ -18,9 +18,6 @@ "patchwork-extensions.mixins.json" ], "entrypoints": { - "main": [ - "net.patchworkmc.impl.extension.PatchworkExtensions" - ] }, "custom": { "modmenu:api": true, diff --git a/patchwork-extensions/src/main/resources/patchwork-extensions.mixins.json b/patchwork-extensions/src/main/resources/patchwork-extensions.mixins.json index 84cd0f37..03b4ff9b 100644 --- a/patchwork-extensions/src/main/resources/patchwork-extensions.mixins.json +++ b/patchwork-extensions/src/main/resources/patchwork-extensions.mixins.json @@ -8,7 +8,6 @@ "MixinEntity", "MixinEntityType", "MixinEntityTypeBuilder", - "MixinPlayerAdvancementTracker", "MixinMinecraftClient", "MixinServerPlayerEntity", "MixinStatusEffect" diff --git a/patchwork-fake-players/build.gradle b/patchwork-fake-players/build.gradle new file mode 100644 index 00000000..7a9230c5 --- /dev/null +++ b/patchwork-fake-players/build.gradle @@ -0,0 +1,6 @@ +archivesBaseName = "patchwork-fake-players" +version = getSubprojectVersion(project, "0.3.0") + +dependencies { + implementation project(path: ':patchwork-api-base', configuration: 'dev') +} diff --git a/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayer.java b/patchwork-fake-players/src/main/java/net/minecraftforge/common/util/FakePlayer.java similarity index 100% rename from patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayer.java rename to patchwork-fake-players/src/main/java/net/minecraftforge/common/util/FakePlayer.java diff --git a/patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayerFactory.java b/patchwork-fake-players/src/main/java/net/minecraftforge/common/util/FakePlayerFactory.java similarity index 100% rename from patchwork-extensions/src/main/java/net/minecraftforge/common/util/FakePlayerFactory.java rename to patchwork-fake-players/src/main/java/net/minecraftforge/common/util/FakePlayerFactory.java diff --git a/patchwork-extensions/src/main/java/net/patchworkmc/impl/extension/PatchworkExtensions.java b/patchwork-fake-players/src/main/java/net/patchworkmc/impl/fakeplayers/PatchworkFakePlayers.java similarity index 91% rename from patchwork-extensions/src/main/java/net/patchworkmc/impl/extension/PatchworkExtensions.java rename to patchwork-fake-players/src/main/java/net/patchworkmc/impl/fakeplayers/PatchworkFakePlayers.java index a34ffebe..4cce8656 100644 --- a/patchwork-extensions/src/main/java/net/patchworkmc/impl/extension/PatchworkExtensions.java +++ b/patchwork-fake-players/src/main/java/net/patchworkmc/impl/fakeplayers/PatchworkFakePlayers.java @@ -17,7 +17,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -package net.patchworkmc.impl.extension; +package net.patchworkmc.impl.fakeplayers; import net.minecraftforge.common.util.FakePlayerFactory; @@ -26,7 +26,7 @@ import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.event.server.ServerStopCallback; -public class PatchworkExtensions implements ModInitializer { +public class PatchworkFakePlayers implements ModInitializer { @Override public void onInitialize() { ServerStopCallback.EVENT.register(server -> { diff --git a/patchwork-extensions/src/main/java/net/patchworkmc/mixin/extension/MixinPlayerAdvancementTracker.java b/patchwork-fake-players/src/main/java/net/patchworkmc/mixin/fakeplayers/MixinPlayerAdvancementTracker.java similarity index 97% rename from patchwork-extensions/src/main/java/net/patchworkmc/mixin/extension/MixinPlayerAdvancementTracker.java rename to patchwork-fake-players/src/main/java/net/patchworkmc/mixin/fakeplayers/MixinPlayerAdvancementTracker.java index 6f353c11..3a101a98 100644 --- a/patchwork-extensions/src/main/java/net/patchworkmc/mixin/extension/MixinPlayerAdvancementTracker.java +++ b/patchwork-fake-players/src/main/java/net/patchworkmc/mixin/fakeplayers/MixinPlayerAdvancementTracker.java @@ -17,7 +17,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -package net.patchworkmc.mixin.extension; +package net.patchworkmc.mixin.fakeplayers; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; diff --git a/patchwork-fake-players/src/main/resources/assets/patchwork-extensions/icon.png b/patchwork-fake-players/src/main/resources/assets/patchwork-extensions/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..de75d2fbe9467f986e4f3072e76fa751dbd72879 GIT binary patch literal 22738 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 literal 0 HcmV?d00001 diff --git a/patchwork-fake-players/src/main/resources/fabric.mod.json b/patchwork-fake-players/src/main/resources/fabric.mod.json new file mode 100644 index 00000000..a544c018 --- /dev/null +++ b/patchwork-fake-players/src/main/resources/fabric.mod.json @@ -0,0 +1,29 @@ +{ + "schemaVersion": 1, + "id": "patchwork-fake-players", + "version": "${version}", + "name": "Patchwork Fake Players", + "description": "Implements the Minecraft Forge fake players API", + "authors": [ + "PatchworkMC" + ], + "license": "LGPL-2.1-only", + "icon": "assets/patchwork-fake-players/icon.png", + "environment": "*", + "depends": { + "patchwork-api-base": "*", + "fabric": "*" + }, + "mixins": [ + "patchwork-fake-players.mixins.json" + ], + "entrypoints": { + "main": [ + "net.patchworkmc.impl.fakeplayers.PatchworkFakePlayers" + ] + }, + "custom": { + "modmenu:api": true, + "modmenu:parent": "patchwork" + } +} diff --git a/patchwork-fake-players/src/main/resources/patchwork-extensions.mixins.json b/patchwork-fake-players/src/main/resources/patchwork-extensions.mixins.json new file mode 100644 index 00000000..27671806 --- /dev/null +++ b/patchwork-fake-players/src/main/resources/patchwork-extensions.mixins.json @@ -0,0 +1,11 @@ +{ + "required": true, + "package": "net.patchworkmc.mixin.fakeplayers", + "compatibilityLevel": "JAVA_8", + "mixins": [ + "MixinPlayerAdvancementTracker", + ], + "injectors": { + "defaultRequire": 1 + } +} diff --git a/settings.gradle b/settings.gradle index 3da056d2..f6ab08d4 100644 --- a/settings.gradle +++ b/settings.gradle @@ -27,6 +27,7 @@ include 'patchwork-extensions' include 'patchwork-extensions-block' include 'patchwork-extensions-item' include 'patchwork-extensions-shearing' +include 'patchwork-fake-players' include 'patchwork-fml' include 'patchwork-god-classes' include 'patchwork-gui' From c5facef169f7783fd6bfacf7570c64e81b01e477 Mon Sep 17 00:00:00 2001 From: williambl Date: Mon, 17 Aug 2020 17:31:21 +0100 Subject: [PATCH 09/12] Update fake players unloading to use `fabric-lifecycle-events-v1` --- .../net/patchworkmc/impl/fakeplayers/PatchworkFakePlayers.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/patchwork-fake-players/src/main/java/net/patchworkmc/impl/fakeplayers/PatchworkFakePlayers.java b/patchwork-fake-players/src/main/java/net/patchworkmc/impl/fakeplayers/PatchworkFakePlayers.java index 4cce8656..7158a837 100644 --- a/patchwork-fake-players/src/main/java/net/patchworkmc/impl/fakeplayers/PatchworkFakePlayers.java +++ b/patchwork-fake-players/src/main/java/net/patchworkmc/impl/fakeplayers/PatchworkFakePlayers.java @@ -19,6 +19,7 @@ package net.patchworkmc.impl.fakeplayers; +import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; import net.minecraftforge.common.util.FakePlayerFactory; import net.minecraft.server.world.ServerWorld; @@ -29,7 +30,7 @@ public class PatchworkFakePlayers implements ModInitializer { @Override public void onInitialize() { - ServerStopCallback.EVENT.register(server -> { + ServerLifecycleEvents.SERVER_STOPPED.register(server -> { for (ServerWorld world : server.getWorlds()) { FakePlayerFactory.unloadWorld(world); } From 5fc81d56035adaf822e3449c6bce54ff80e02a39 Mon Sep 17 00:00:00 2001 From: williambl Date: Mon, 17 Aug 2020 17:42:44 +0100 Subject: [PATCH 10/12] Fix style --- .../main/java/net/minecraftforge/common/util/FakePlayer.java | 3 +++ .../net/patchworkmc/impl/fakeplayers/PatchworkFakePlayers.java | 3 +-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/patchwork-fake-players/src/main/java/net/minecraftforge/common/util/FakePlayer.java b/patchwork-fake-players/src/main/java/net/minecraftforge/common/util/FakePlayer.java index de91c401..2408f660 100644 --- a/patchwork-fake-players/src/main/java/net/minecraftforge/common/util/FakePlayer.java +++ b/patchwork-fake-players/src/main/java/net/minecraftforge/common/util/FakePlayer.java @@ -75,4 +75,7 @@ public void tick() { @Override public void setClientSettings(ClientSettingsC2SPacket packet) { } + + // Forge also has this here: + // @Override @Nullable public MinecraftServer getServer() { return ServerLifecycleHooks.getCurrentServer(); } } diff --git a/patchwork-fake-players/src/main/java/net/patchworkmc/impl/fakeplayers/PatchworkFakePlayers.java b/patchwork-fake-players/src/main/java/net/patchworkmc/impl/fakeplayers/PatchworkFakePlayers.java index 7158a837..1e9db443 100644 --- a/patchwork-fake-players/src/main/java/net/patchworkmc/impl/fakeplayers/PatchworkFakePlayers.java +++ b/patchwork-fake-players/src/main/java/net/patchworkmc/impl/fakeplayers/PatchworkFakePlayers.java @@ -19,13 +19,12 @@ package net.patchworkmc.impl.fakeplayers; -import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; import net.minecraftforge.common.util.FakePlayerFactory; import net.minecraft.server.world.ServerWorld; +import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; import net.fabricmc.api.ModInitializer; -import net.fabricmc.fabric.api.event.server.ServerStopCallback; public class PatchworkFakePlayers implements ModInitializer { @Override From cfa61b585cd1145293e64657182870992c933408 Mon Sep 17 00:00:00 2001 From: Glitch Date: Mon, 17 Aug 2020 16:16:39 -0500 Subject: [PATCH 11/12] Update patchwork-extensions/src/main/resources/fabric.mod.json --- patchwork-extensions/src/main/resources/fabric.mod.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/patchwork-extensions/src/main/resources/fabric.mod.json b/patchwork-extensions/src/main/resources/fabric.mod.json index 4e3e25ca..ec0a3d92 100644 --- a/patchwork-extensions/src/main/resources/fabric.mod.json +++ b/patchwork-extensions/src/main/resources/fabric.mod.json @@ -17,8 +17,6 @@ "mixins": [ "patchwork-extensions.mixins.json" ], - "entrypoints": { - }, "custom": { "modmenu:api": true, "modmenu:parent": "patchwork" From 94ba18bc256ba124bd1e3d104aac303d598ad179 Mon Sep 17 00:00:00 2001 From: Glitch Date: Mon, 17 Aug 2020 16:16:52 -0500 Subject: [PATCH 12/12] Update patchwork-fake-players/build.gradle --- patchwork-fake-players/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patchwork-fake-players/build.gradle b/patchwork-fake-players/build.gradle index 7a9230c5..e18ff318 100644 --- a/patchwork-fake-players/build.gradle +++ b/patchwork-fake-players/build.gradle @@ -1,5 +1,5 @@ archivesBaseName = "patchwork-fake-players" -version = getSubprojectVersion(project, "0.3.0") +version = getSubprojectVersion(project, "0.1.0") dependencies { implementation project(path: ':patchwork-api-base', configuration: 'dev')