____tbvns____ пре 5 месеци
родитељ
комит
45805a6893

+ 3 - 0
build.gradle

@@ -43,6 +43,9 @@ dependencies {
     modImplementation 'xyz.nucleoid:fantasy:0.6.5+1.21.2'
     modImplementation 'com.github.WaterMediaTeam.watermedia:build:2.1.1'
     modImplementation files('libs/worldedit-fabric-mc1.21.3-7.3.9-SNAPSHOT-dist.jar')
+
+    // https://mvnrepository.com/artifact/org.projectlombok/lombok
+    compileOnly 'org.projectlombok:lombok:1.18.34'
 }
 
 processResources {

+ 1 - 0
src/main/java/xyz/tbvns/rogue_block/Events/PlayerStartButtonEvent.java

@@ -16,6 +16,7 @@ public class PlayerStartButtonEvent implements UseBlockCallback {
             if (!world.isClient) {
                 WorldManager.createNewRunWorld(world.getServer());
                 WorldManager.teleportToRunWorld(world.getServer());
+                WorldManager.clearAchievements(world.getServer());
             }
         }
         return ActionResult.PASS;

+ 8 - 1
src/main/java/xyz/tbvns/rogue_block/Managers/DataManager.java

@@ -1,5 +1,6 @@
 package xyz.tbvns.rogue_block.Managers;
 
+import lombok.Data;
 import net.minecraft.entity.LivingEntity;
 import net.minecraft.nbt.NbtCompound;
 import net.minecraft.registry.RegistryWrapper;
@@ -19,8 +20,14 @@ public class DataManager extends PersistentState {
 
     public HashMap<UUID, playerData> players = new HashMap<>();
 
+    @Data
     public static class playerData {
-        public int points = 0;
+        private int points = 0;
+
+        public int addPoints(int amount) {
+            points += amount;
+            return points;
+        }
     }
 
     @Override

+ 27 - 15
src/main/java/xyz/tbvns/rogue_block/Managers/WorldManager.java

@@ -3,22 +3,17 @@ package xyz.tbvns.rogue_block.Managers;
 import com.mojang.datafixers.util.Either;
 import com.sk89q.worldedit.EditSession;
 import com.sk89q.worldedit.WorldEdit;
-import com.sk89q.worldedit.WorldEditException;
-import com.sk89q.worldedit.extension.input.ParserContext;
 import com.sk89q.worldedit.extent.clipboard.Clipboard;
 import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormat;
 import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormats;
 import com.sk89q.worldedit.extent.clipboard.io.ClipboardReader;
 import com.sk89q.worldedit.fabric.FabricAdapter;
-import com.sk89q.worldedit.fabric.FabricWorld;
-import com.sk89q.worldedit.fabric.FabricWorldEdit;
 import com.sk89q.worldedit.function.operation.Operation;
 import com.sk89q.worldedit.function.operation.Operations;
 import com.sk89q.worldedit.math.BlockVector3;
 import com.sk89q.worldedit.session.ClipboardHolder;
-import com.sk89q.worldedit.world.World;
-import com.sk89q.worldedit.world.block.BlockTypes;
 import net.fabricmc.fabric.api.util.TriState;
+import net.minecraft.advancement.PlayerAdvancementTracker;
 import net.minecraft.block.Blocks;
 import net.minecraft.entity.Entity;
 import net.minecraft.network.packet.s2c.play.PositionFlag;
@@ -29,10 +24,16 @@ import net.minecraft.registry.entry.RegistryEntryList;
 import net.minecraft.registry.entry.RegistryEntryOwner;
 import net.minecraft.registry.tag.TagKey;
 import net.minecraft.server.MinecraftServer;
+import net.minecraft.server.command.CommandOutput;
+import net.minecraft.server.command.ServerCommandSource;
 import net.minecraft.server.network.ServerPlayerEntity;
 import net.minecraft.server.world.ServerWorld;
 import net.minecraft.structure.StructureSet;
+import net.minecraft.text.Text;
+import net.minecraft.util.Identifier;
 import net.minecraft.util.math.BlockPos;
+import net.minecraft.util.math.Vec2f;
+import net.minecraft.util.math.Vec3d;
 import net.minecraft.world.Difficulty;
 import net.minecraft.world.GameRules;
 import net.minecraft.world.biome.Biome;
@@ -42,19 +43,17 @@ import net.minecraft.world.gen.chunk.FlatChunkGenerator;
 import net.minecraft.world.gen.chunk.FlatChunkGeneratorConfig;
 import net.minecraft.world.gen.chunk.FlatChunkGeneratorLayer;
 import net.minecraft.world.gen.feature.PlacedFeature;
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.IOUtils;
 import org.jetbrains.annotations.NotNull;
 import xyz.nucleoid.fantasy.Fantasy;
 import xyz.nucleoid.fantasy.RuntimeWorldConfig;
 import xyz.nucleoid.fantasy.RuntimeWorldHandle;
 import xyz.tbvns.rogue_block.Utils;
 
-import java.io.File;
-import java.io.FileInputStream;
 import java.util.*;
 import java.util.stream.Stream;
 
+import static xyz.tbvns.rogue_block.Rogue_block.MOD_ID;
+
 public class WorldManager {
 
     static RuntimeWorldHandle runWorldHandle;
@@ -85,9 +84,9 @@ public class WorldManager {
                 .setTimeOfDay(18000)
                 .setGenerator(generator)
                 .setFlat(TriState.TRUE)
-                .setSeed(1234L);
+                .setSeed(0L);
 
-        lobbyWorldHandle = fantasy.openTemporaryWorld(worldConfig);
+        lobbyWorldHandle = fantasy.getOrOpenPersistentWorld(Identifier.of(MOD_ID, "lobby"), worldConfig);
 
         ServerWorld world = lobbyWorldHandle.asWorld();
         world.setMobSpawnOptions(false);
@@ -98,7 +97,8 @@ public class WorldManager {
         }
 
         ClipboardFormat format = ClipboardFormats.findByAlias("schem");
-        System.out.println(format.getFileExtensions());
+
+
         try {
             Utils.delay(100, () -> {
                 try {
@@ -113,8 +113,6 @@ public class WorldManager {
                             .build();
                         Operations.complete(operation);
                     editSession.close();
-
-                    teleportToLobbyWorld(server);
                 } catch (Exception e) {
                     throw new RuntimeException(e);
                 }
@@ -159,6 +157,20 @@ public class WorldManager {
         }
     }
 
+    public static void clearAchievements(MinecraftServer server) {
+        server.getCommandManager().executeWithPrefix(new ServerCommandSource(
+                CommandOutput.DUMMY,
+                Vec3d.ZERO,
+                Vec2f.ZERO,
+                runWorldHandle.asWorld(),
+                4,
+                "null",
+                Text.empty(),
+                server,
+                null
+        ), "advancement revoke @a everything");
+    }
+
     public static void teleportToLobbyWorld(ServerPlayerEntity entity) {
         Random random = new Random();
         int x = random.nextInt(-3, 3);

+ 1 - 1
src/main/java/xyz/tbvns/rogue_block/Rogue_block.java

@@ -10,7 +10,7 @@ import xyz.tbvns.rogue_block.Events.PlayerStartButtonEvent;
 import xyz.tbvns.rogue_block.Events.ServerStartEvent;
 
 public class Rogue_block implements ModInitializer {
-    public static final String MOD_ID = "RogueBlock";
+    public static final String MOD_ID = "rogue_block";
 
     @Override
     public void onInitialize() {

+ 22 - 0
src/main/java/xyz/tbvns/rogue_block/mixin/MixinAchievementReward.java

@@ -0,0 +1,22 @@
+package xyz.tbvns.rogue_block.mixin;
+
+import net.minecraft.advancement.AdvancementRewards;
+import net.minecraft.server.network.ServerPlayerEntity;
+import net.minecraft.text.Text;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.Inject;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
+import xyz.tbvns.rogue_block.Managers.DataManager;
+
+@Mixin(AdvancementRewards.class)
+public class MixinAchievementReward {
+    @Inject(method = "apply", at = @At("HEAD"))
+    public void apply(ServerPlayerEntity player, CallbackInfo ci) {
+        AdvancementRewards advancementRewards = ((AdvancementRewards) ((Object) this));
+        int point = advancementRewards.experience() / 10;
+        if (point == 0) return;
+        DataManager.getPlayerState(player).addPoints(point);
+        player.sendMessage(Text.of("§aReceived §b§l" + point + "§r§a points for completing an achievement."));
+    }
+}

+ 1 - 1
src/main/java/xyz/tbvns/rogue_block/mixin/MixinPlayerDeath.java

@@ -24,7 +24,7 @@ public abstract class MixinPlayerDeath {
 
         WorldManager.teleportToLobbyWorld(((ServerPlayerEntity) (Object) this));
 
-        System.out.println(DataManager.getPlayerState(((ServerPlayerEntity) (Object) this)).points += 1);
+        System.out.println(DataManager.getPlayerState(((ServerPlayerEntity) (Object) this)).addPoints(10));
 
         ci.cancel();
     }

+ 2 - 1
src/main/resources/rogue_block.mixins.json

@@ -4,7 +4,8 @@
   "package": "xyz.tbvns.rogue_block.mixin",
   "compatibilityLevel": "JAVA_21",
   "mixins": [
-    "MixinPlayerDeath"
+    "MixinPlayerDeath",
+    "MixinAchievementReward"
   ],
   "injectors": {
     "defaultRequire": 1