diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml
index 055df60..04caf0a 100644
--- a/.github/workflows/gradle.yml
+++ b/.github/workflows/gradle.yml
@@ -3,7 +3,7 @@
name: Java CI with Gradle
-concurrency:
+concurrency:
group: "build"
cancel-in-progress: true
@@ -12,7 +12,7 @@ on:
branches: [ master ]
paths-ignore:
- '*.md'
-
+
jobs:
build:
@@ -20,10 +20,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- - name: Set up JDK 17
+ - name: Set up JDK 21
uses: actions/setup-java@v3.10.0
with:
- java-version: 17
+ java-version: 21
distribution: 'zulu'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
@@ -34,9 +34,9 @@ jobs:
- uses: "marvinpinto/action-automatic-releases@latest"
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
- automatic_release_tag: "latest-1.20.4"
+ automatic_release_tag: "latest-1.20.6"
prerelease: false
- title: "1.20.4 Build"
+ title: "1.20.6 Build"
files: |
./build/libs/*.jar
-
+
diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml
index eb42b3d..5bd6eeb 100644
--- a/.github/workflows/pull_request.yml
+++ b/.github/workflows/pull_request.yml
@@ -11,10 +11,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- - name: Set up JDK 17
+ - name: Set up JDK 21
uses: actions/setup-java@v3.10.0
with:
- java-version: 17
+ java-version: 21
distribution: 'zulu'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
diff --git a/README.md b/README.md
index 406c2c5..d23e352 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
-
+
diff --git a/build.gradle b/build.gradle
index d5fe24c..2041161 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,8 +1,8 @@
plugins {
- id 'fabric-loom' version '1.1-SNAPSHOT'
+ id 'fabric-loom' version '1.6-SNAPSHOT'
}
-sourceCompatibility = targetCompatibility = JavaVersion.VERSION_17
+sourceCompatibility = targetCompatibility = JavaVersion.VERSION_21
archivesBaseName = project.archives_base_name
version = project.mod_version
@@ -35,7 +35,7 @@ dependencies {
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
modImplementation("meteordevelopment:meteor-client:${project.meteor_version}-SNAPSHOT")
- modImplementation "meteordevelopment:baritone:${project.minecraft_version}-SNAPSHOT"
+ modCompileOnly "meteordevelopment:baritone:${project.baritone_version}-SNAPSHOT"
// seed .locate and ore sim
extraLibs('com.seedfinding:mc_math:ffd2edcfcc0d18147549c88cc7d8ec6cf21b5b91') { transitive = false }
@@ -45,7 +45,7 @@ dependencies {
extraLibs('com.seedfinding:mc_biome:41a42cb9019a552598f12089059538853e18ec78') { transitive = false }
extraLibs('com.seedfinding:mc_terrain:b4246cbd5880c4f8745ccb90e1b102bde3448126') { transitive = false }
extraLibs('com.seedfinding:mc_feature:919b7e513cc1e87e029a9cd703fc4e2dc8686229') { transitive = false }
-
+
// seedcracker api
implementation (include('com.github.19MisterX98.SeedcrackerX:seedcrackerx-api:2.10.1')) {transitive = false}
// implementation (include('com.github.19MisterX98.SeedcrackerX:seedcrackerx-api:master-SNAPSHOT')) {transitive = false}
@@ -90,7 +90,7 @@ tasks.withType(JavaCompile).configureEach {
// The Minecraft launcher currently installs Java 8 for users, so your mod probably wants to target Java 8 too
// JDK 9 introduced a new way of specifying this that will make sure no newer classes or methods are used.
// We'll use that if it's available, but otherwise we'll use the older option.
- def targetVersion = 17
+ def targetVersion = 21
if (JavaVersion.current().isJava9Compatible()) {
it.options.release = targetVersion
}
diff --git a/gradle.properties b/gradle.properties
index 73d9250..46b26e2 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -2,13 +2,14 @@
org.gradle.jvmargs=-Xmx2G
# Fabric Properties
-minecraft_version=1.20.4
-yarn_version=1.20.4+build.3
-loader_version=0.15.2
+minecraft_version=1.20.6
+yarn_version=1.20.6+build.1
+loader_version=0.15.11
# Mod Properties
mod_version = 0.3
maven_group = anticope.rejects
archives_base_name = meteor-rejects-addon
-meteor_version=0.5.6
\ No newline at end of file
+meteor_version=0.5.7
+baritone_version=1.20.4
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index ef62641..48c0a02 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
\ No newline at end of file
+zipStorePath=wrapper/dists
diff --git a/src/main/java/anticope/rejects/commands/GiveCommand.java b/src/main/java/anticope/rejects/commands/GiveCommand.java
index d6d6d72..c14fe40 100644
--- a/src/main/java/anticope/rejects/commands/GiveCommand.java
+++ b/src/main/java/anticope/rejects/commands/GiveCommand.java
@@ -6,6 +6,8 @@ import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import meteordevelopment.meteorclient.commands.Command;
import net.minecraft.command.CommandSource;
+import net.minecraft.component.DataComponentTypes;
+import net.minecraft.component.type.NbtComponent;
import net.minecraft.item.BlockItem;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
@@ -35,35 +37,41 @@ public class GiveCommand extends Command {
ItemStack inHand = mc.player.getMainHandStack();
ItemStack item = new ItemStack(Items.STRIDER_SPAWN_EGG);
NbtCompound ct = new NbtCompound();
+
+ NbtCompound itemNbt = inHand
+ .getOrDefault(DataComponentTypes.CUSTOM_DATA, NbtComponent.DEFAULT)
+ .copyNbt();
+
if (inHand.getItem() instanceof BlockItem) {
- ct.putInt("Time", 1);
- ct.putString("id", "minecraft:falling_block");
- ct.put("BlockState", new NbtCompound());
- ct.getCompound("BlockState").putString("Name", Registries.ITEM.getId(inHand.getItem()).toString());
- if (inHand.hasNbt() && inHand.getNbt().contains("BlockEntityTag")) {
- ct.put("TileEntityData", inHand.getNbt().getCompound("BlockEntityTag"));
+ itemNbt.putInt("Time", 1);
+ itemNbt.putString("id", "minecraft:falling_block");
+ itemNbt.put("BlockState", new NbtCompound());
+ itemNbt.getCompound("BlockState").putString("Name", Registries.ITEM.getId(inHand.getItem()).toString());
+ if (inHand.getComponents().contains(DataComponentTypes.BLOCK_ENTITY_DATA)) {
+ itemNbt.put("TileEntityData", inHand.get(DataComponentTypes.BLOCK_ENTITY_DATA).copyNbt());
}
NbtCompound t = new NbtCompound();
t.put("EntityTag", ct);
- item.setNbt(t);
+ item.set(DataComponentTypes.CUSTOM_DATA, NbtComponent.of(itemNbt));
} else {
ct.putString("id", "minecraft:item");
NbtCompound it = new NbtCompound();
it.putString("id", Registries.ITEM.getId(inHand.getItem()).toString());
it.putInt("Count", inHand.getCount());
- if (inHand.hasNbt()) {
- it.put("tag", inHand.getNbt());
+ if (!inHand.getComponents().isEmpty()) {
+ it.put("tag", inHand.getOrDefault(DataComponentTypes.CUSTOM_DATA, NbtComponent.DEFAULT).copyNbt());
}
ct.put("Item", it);
}
NbtCompound t = new NbtCompound();
t.put("EntityTag", ct);
- item.setNbt(t);
- item.setCustomName(inHand.getName());
+ item.set(DataComponentTypes.CUSTOM_DATA, NbtComponent.of(t));
+ item.set(DataComponentTypes.CUSTOM_NAME, inHand.getName());
GiveUtils.giveItem(item);
return SINGLE_SUCCESS;
}));
+ //TODO: allow for custom cords to place oob
builder.then(literal("holo").then(argument("message", StringArgumentType.greedyString()).executes(ctx -> {
String message = ctx.getArgument("message", String.class).replace("&", "\247");
ItemStack stack = new ItemStack(Items.ARMOR_STAND);
@@ -77,9 +85,9 @@ public class GiveCommand extends Command {
tag.putBoolean("Interpret", true);
tag.putBoolean("NoGravity", true);
tag.putBoolean("CustomNameVisible", true);
- tag.putString("CustomName", Text.Serialization.toJsonString(Text.literal(message)));
+ tag.putString("CustomName", Text.literal(message).toString());
tag.put("Pos", NbtList);
- stack.setSubNbt("EntityTag", tag);
+ stack.set(DataComponentTypes.ENTITY_DATA, NbtComponent.of(tag));
GiveUtils.giveItem(stack);
return SINGLE_SUCCESS;
})));
@@ -88,13 +96,13 @@ public class GiveCommand extends Command {
String message = ctx.getArgument("message", String.class).replace("&", "\247");
ItemStack stack = new ItemStack(Items.BAT_SPAWN_EGG);
NbtCompound tag = new NbtCompound();
- tag.putString("CustomName", Text.Serialization.toJsonString(Text.literal(message)));
+ tag.putString("CustomName", Text.literal(message).toString());
tag.putBoolean("NoAI", true);
tag.putBoolean("Silent", true);
tag.putBoolean("PersistenceRequired", true);
tag.putBoolean("Invisible", true);
tag.put("id", NbtString.of("minecraft:wither"));
- stack.setSubNbt("EntityTag", tag);
+ stack.set(DataComponentTypes.ENTITY_DATA, NbtComponent.of(tag));
GiveUtils.giveItem(stack);
return SINGLE_SUCCESS;
})));
@@ -104,7 +112,7 @@ public class GiveCommand extends Command {
ItemStack itemStack = new ItemStack(Items.PLAYER_HEAD);
NbtCompound tag = new NbtCompound();
tag.putString("SkullOwner", playerName);
- itemStack.setNbt(tag);
+ itemStack.set(DataComponentTypes.CUSTOM_DATA, NbtComponent.of(tag));
GiveUtils.giveItem(itemStack);
return SINGLE_SUCCESS;
})));
diff --git a/src/main/java/anticope/rejects/commands/ReconnectCommand.java b/src/main/java/anticope/rejects/commands/ReconnectCommand.java
index 1b4ed5e..855fa68 100644
--- a/src/main/java/anticope/rejects/commands/ReconnectCommand.java
+++ b/src/main/java/anticope/rejects/commands/ReconnectCommand.java
@@ -24,7 +24,7 @@ public class ReconnectCommand extends Command {
if (info != null) {
mc.world.disconnect();
ConnectScreen.connect(new MultiplayerScreen(new TitleScreen()), mc,
- ServerAddress.parse(info.address), info, false);
+ ServerAddress.parse(info.address), info, false, null);
}
return SINGLE_SUCCESS;
});
diff --git a/src/main/java/anticope/rejects/gui/screens/HeadScreen.java b/src/main/java/anticope/rejects/gui/screens/HeadScreen.java
index f3c7e71..2208ad0 100644
--- a/src/main/java/anticope/rejects/gui/screens/HeadScreen.java
+++ b/src/main/java/anticope/rejects/gui/screens/HeadScreen.java
@@ -14,6 +14,8 @@ import meteordevelopment.meteorclient.settings.Settings;
import meteordevelopment.meteorclient.utils.network.Http;
import meteordevelopment.meteorclient.utils.network.MeteorExecutor;
import meteordevelopment.meteorclient.utils.player.ChatUtils;
+import net.minecraft.component.DataComponentTypes;
+import net.minecraft.component.type.NbtComponent;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.nbt.NbtCompound;
@@ -80,7 +82,7 @@ public class HeadScreen extends WindowScreen {
heads.add(createHeadStack(a.get("uuid"), a.get("value"), a.get("name")));
} catch (Exception e) { }
});
-
+
WTable t = theme.table();
for (ItemStack head : heads) {
t.add(theme.item(head));
@@ -118,11 +120,11 @@ public class HeadScreen extends WindowScreen {
properties.put("textures", textures);
skullOwner.put("Properties", properties);
tag.put("SkullOwner", skullOwner);
- head.setNbt(tag);
- head.setCustomName(Text.literal(name));
+ head.set(DataComponentTypes.CUSTOM_DATA, NbtComponent.of(tag));
+ head.set(DataComponentTypes.CUSTOM_NAME, Text.literal(name));
return head;
}
-
+
@Override
public void initWidgets() {}
}
diff --git a/src/main/java/anticope/rejects/gui/screens/InteractionScreen.java b/src/main/java/anticope/rejects/gui/screens/InteractionScreen.java
index e56c4d5..f70d3b1 100644
--- a/src/main/java/anticope/rejects/gui/screens/InteractionScreen.java
+++ b/src/main/java/anticope/rejects/gui/screens/InteractionScreen.java
@@ -23,7 +23,9 @@ import net.minecraft.client.option.KeyBinding;
import net.minecraft.client.render.GameRenderer;
import net.minecraft.client.util.InputUtil;
import net.minecraft.client.util.math.MatrixStack;
+import net.minecraft.component.DataComponentTypes;
import net.minecraft.entity.Entity;
+import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.Saddleable;
import net.minecraft.entity.mob.EndermanEntity;
import net.minecraft.entity.passive.AbstractHorseEntity;
@@ -114,7 +116,7 @@ public class InteractionScreen extends Screen {
functions.put("Open Inventory", (Entity e) -> {
closeScreen();
ItemStack container = new ItemStack(Items.CHEST);
- container.setCustomName(e.getName());
+ container.set(DataComponentTypes.CUSTOM_NAME, e.getName());
client.setScreen(new PeekScreen(container, getInventory(e)));
});
}
@@ -190,18 +192,21 @@ public class InteractionScreen extends Screen {
index[0]++;
}
}
- e.getHandItems().forEach(itemStack -> {
+ LivingEntity a = (LivingEntity) e;
+ a.getHandItems().forEach(itemStack -> {
if (itemStack != null) {
stack[index[0]] = itemStack;
index[0]++;
}
});
- e.getArmorItems().forEach(itemStack -> {
+
+ a.getArmorItems().forEach(itemStack -> {
if (itemStack != null) {
stack[index[0]] = itemStack;
index[0]++;
}
});
+
for (int i = index[0]; i < 27; i++) stack[i] = Items.AIR.getDefaultStack();
return stack;
}
@@ -363,4 +368,4 @@ public class InteractionScreen extends Screen {
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/anticope/rejects/gui/screens/StatsScreen.java b/src/main/java/anticope/rejects/gui/screens/StatsScreen.java
index 17f7a8c..d5c8deb 100644
--- a/src/main/java/anticope/rejects/gui/screens/StatsScreen.java
+++ b/src/main/java/anticope/rejects/gui/screens/StatsScreen.java
@@ -44,11 +44,11 @@ public class StatsScreen extends WindowScreen {
if (entity instanceof LivingEntity liv) {
add(theme.label(String.format("Health: %.2f/%.2f", liv.getHealth(), liv.getMaxHealth())));
add(theme.label(String.format("Armor: %d/20", liv.getArmor())));
-
+
WSection effectList = add(theme.section("Status Effects", effectListExpanded)).expandX().widget();
effectList.action = () -> effectListExpanded = effectList.isExpanded();
liv.getActiveStatusEffects().forEach((effect, instance) -> {
- String status = lang.get(effect.getTranslationKey());
+ String status = lang.get(effect.value().getTranslationKey());
float tps = TickRate.INSTANCE.getTickRate();
if (instance.getAmplifier() != 0) {
status += (String.format(" %d (%s)", instance.getAmplifier()+1, StatusEffectUtil.getDurationText(instance, 1, tps)));
@@ -60,11 +60,11 @@ public class StatsScreen extends WindowScreen {
if (liv.getActiveStatusEffects().isEmpty()) {
effectList.add(theme.label("No effects")).expandX();
}
-
+
WSection attribList = add(theme.section("Attributes", attribListExpanded)).expandX().widget();
attribList.action = () -> attribListExpanded = attribList.isExpanded();
liv.getAttributes().getTracked().forEach((attrib) -> attribList.add(theme.label(String.format("%s: %.2f",
- lang.get(attrib.getAttribute().getTranslationKey()),
+ lang.get(attrib.getAttribute().value().getTranslationKey()),
attrib.getValue()
))).expandX());
}
@@ -73,7 +73,7 @@ public class StatsScreen extends WindowScreen {
dimension.add(theme.label(String.format("Position: %.2f, %.2f, %.2f", entity.getX(), entity.getY(), entity.getZ()))).expandX();
dimension.add(theme.label(String.format("Yaw: %.2f, Pitch: %.2f", entity.getYaw(), entity.getPitch()))).expandX();
Box box = entity.getBoundingBox();
- dimension.add(theme.label(String.format("Bounding Box: %.2f, %.2f, %.2f",
+ dimension.add(theme.label(String.format("Bounding Box: %.2f, %.2f, %.2f",
box.maxX-box.minX, box.maxY-box.minY, box.maxZ-box.minZ
))).expandX();
}
@@ -82,7 +82,7 @@ public class StatsScreen extends WindowScreen {
private void onTick(TickEvent.Post event) {
updateData();
}
-
+
@Override
public void initWidgets() {}
}
diff --git a/src/main/java/anticope/rejects/mixin/LivingEntityRendererMixin.java b/src/main/java/anticope/rejects/mixin/LivingEntityRendererMixin.java
index 5ece6ba..ed4cce6 100644
--- a/src/main/java/anticope/rejects/mixin/LivingEntityRendererMixin.java
+++ b/src/main/java/anticope/rejects/mixin/LivingEntityRendererMixin.java
@@ -16,10 +16,10 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Environment(EnvType.CLIENT)
@Mixin(LivingEntityRenderer.class)
-public class LivingEntityRendererMixin {
+public class LivingEntityRendererMixin {
@Inject(method = "setupTransforms", at = @At(value = "TAIL"))
- private void dinnerboneEntities(LivingEntity entity, MatrixStack matrices, float _animationProgress, float _bodyYaw, float _tickDelta, CallbackInfo _info) {
+ private void dinnerboneEntities(T entity, MatrixStack matrices, float animationProgress, float bodyYaw, float tickDelta, float scale, CallbackInfo ci) {
Rendering renderingModule = Modules.get().get(Rendering.class);
if (renderingModule == null) return;
if ((!(entity instanceof PlayerEntity)) && renderingModule.dinnerboneEnabled()) {
diff --git a/src/main/java/anticope/rejects/modules/AntiVanish.java b/src/main/java/anticope/rejects/modules/AntiVanish.java
index e3af556..f85a2cf 100644
--- a/src/main/java/anticope/rejects/modules/AntiVanish.java
+++ b/src/main/java/anticope/rejects/modules/AntiVanish.java
@@ -75,7 +75,7 @@ public class AntiVanish extends Module {
@EventHandler
private void onPacket(PacketEvent.Receive event) {
if (mode.get() == Mode.RealJoinMessage && event.packet instanceof CommandSuggestionsS2CPacket packet) {
- if (completionIDs.contains(packet.getCompletionId())) {
+ if (completionIDs.contains(packet.id())) {
var lastUsernames = completionPlayerCache.stream().toList();
completionPlayerCache = packet.getSuggestions().getList().stream()
@@ -100,7 +100,7 @@ public class AntiVanish extends Module {
}
}
- completionIDs.remove(Integer.valueOf(packet.getCompletionId()));
+ completionIDs.remove(Integer.valueOf(packet.id()));
event.cancel();
}
}
@@ -143,4 +143,4 @@ public class AntiVanish extends Module {
LeaveMessage,
RealJoinMessage//https://github.com/xtrm-en/meteor-antistaff/blob/main/src/main/java/me/xtrm/meteorclient/antistaff/modules/AntiStaff.java
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/anticope/rejects/modules/AutoEnchant.java b/src/main/java/anticope/rejects/modules/AutoEnchant.java
index 993192c..a633bcc 100644
--- a/src/main/java/anticope/rejects/modules/AutoEnchant.java
+++ b/src/main/java/anticope/rejects/modules/AutoEnchant.java
@@ -10,6 +10,7 @@ import meteordevelopment.meteorclient.utils.player.InvUtils;
import meteordevelopment.orbit.EventHandler;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.screen.EnchantmentScreenHandler;
import net.minecraft.screen.ScreenHandler;
@@ -50,7 +51,7 @@ public class AutoEnchant extends meteordevelopment.meteorclient.systems.modules.
.name("item-whitelist")
.description("Item that require enchantment.")
.defaultValue()
- .filter(item -> item.equals(Items.BOOK) || item.isDamageable())
+ .filter(item -> item.equals(Items.BOOK) || new ItemStack(item).isDamageable())
.build()
);
@@ -109,7 +110,7 @@ public class AutoEnchant extends meteordevelopment.meteorclient.systems.modules.
}
private boolean fillCanEnchantItem() {
- FindItemResult res = InvUtils.find(stack -> itemWhitelist.get().contains(stack.getItem()) && EnchantmentHelper.get(stack).isEmpty());
+ FindItemResult res = InvUtils.find(stack -> itemWhitelist.get().contains(stack.getItem()) && EnchantmentHelper.canHaveEnchantments(stack));
if (!res.found()) return false;
InvUtils.shiftClick().slot(res.slot());
return true;
diff --git a/src/main/java/anticope/rejects/modules/AutoExtinguish.java b/src/main/java/anticope/rejects/modules/AutoExtinguish.java
index a05cada..bb858b3 100644
--- a/src/main/java/anticope/rejects/modules/AutoExtinguish.java
+++ b/src/main/java/anticope/rejects/modules/AutoExtinguish.java
@@ -82,9 +82,9 @@ public class AutoExtinguish extends Module {
private boolean hasPlacedWater = false;
private BlockPos blockPos = null;
private boolean doesWaterBucketWork = true;
-
+
private static final StatusEffect FIRE_RESISTANCE = Registries.STATUS_EFFECT.get(new Identifier("fire_resistance"));
-
+
public AutoExtinguish() {
super(MeteorRejectsAddon.CATEGORY, "auto-extinguish", "Automatically extinguishes fire around you");
}
@@ -114,7 +114,7 @@ public class AutoExtinguish extends Module {
place(slot);
hasPlacedWater = false;
- } else if (!mc.player.hasStatusEffect(FIRE_RESISTANCE) && mc.player.isOnFire()) {
+ } else if (!mc.player.hasStatusEffect(Registries.STATUS_EFFECT.getEntry(FIRE_RESISTANCE)) && mc.player.isOnFire()) {
blockPos = mc.player.getBlockPos();
final int slot = findSlot(Items.WATER_BUCKET);
if (mc.world.getBlockState(blockPos).getBlock() == Blocks.FIRE || mc.world.getBlockState(blockPos).getBlock() == Blocks.SOUL_FIRE) {
diff --git a/src/main/java/anticope/rejects/modules/AutoFarm.java b/src/main/java/anticope/rejects/modules/AutoFarm.java
index 0765a5e..cd4cb9f 100644
--- a/src/main/java/anticope/rejects/modules/AutoFarm.java
+++ b/src/main/java/anticope/rejects/modules/AutoFarm.java
@@ -257,13 +257,13 @@ public class AutoFarm extends Module {
if (block instanceof CropBlock cropBlock) {
return cropBlock.isMature(state);
} else if (block instanceof CocoaBlock cocoaBlock) {
- return !cocoaBlock.hasRandomTicks(state);
+ return state.get(cocoaBlock.AGE) >= 2;
} else if (block instanceof StemBlock) {
return state.get(StemBlock.AGE) == StemBlock.MAX_AGE;
} else if (block instanceof SweetBerryBushBlock sweetBerryBushBlock) {
- return !sweetBerryBushBlock.hasRandomTicks(state);
+ return state.get(sweetBerryBushBlock.AGE) >= 2;
} else if (block instanceof NetherWartBlock netherWartBlock) {
- return !netherWartBlock.hasRandomTicks(state);
+ return state.get(netherWartBlock.AGE) >= 3;
}
return true;
}
@@ -283,7 +283,8 @@ public class AutoFarm extends Module {
block == Blocks.PUMPKIN ||
block == Blocks.MELON ||
block == Blocks.NETHER_WART ||
- block == Blocks.SWEET_BERRY_BUSH;
+ block == Blocks.SWEET_BERRY_BUSH ||
+ block == Blocks.COCOA;
}
private boolean plantFilter(Item item) {
diff --git a/src/main/java/anticope/rejects/modules/AutoGrind.java b/src/main/java/anticope/rejects/modules/AutoGrind.java
index 25336d6..c0463fe 100644
--- a/src/main/java/anticope/rejects/modules/AutoGrind.java
+++ b/src/main/java/anticope/rejects/modules/AutoGrind.java
@@ -7,6 +7,7 @@ import meteordevelopment.meteorclient.systems.modules.Module;
import meteordevelopment.meteorclient.utils.network.MeteorExecutor;
import meteordevelopment.meteorclient.utils.player.InvUtils;
import meteordevelopment.orbit.EventHandler;
+import net.minecraft.component.DataComponentTypes;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.item.Item;
@@ -32,7 +33,7 @@ public class AutoGrind extends Module {
.name("item-blacklist")
.description("Items that should be ignored.")
.defaultValue()
- .filter(Item::isDamageable)
+ .filter(Item -> Item.getComponents().get(DataComponentTypes.DAMAGE) != null)
.build()
);
@@ -73,7 +74,7 @@ public class AutoGrind extends Module {
private boolean canGrind(ItemStack stack) {
if (itemBlacklist.get().contains(stack.getItem())) return false;
- Map enchantments = EnchantmentHelper.get(stack);
+ Map enchantments = (Map) EnchantmentHelper.getEnchantments(stack);
int availEnchs = 0;
for (Enchantment enchantment : enchantments.keySet()) {
@@ -84,6 +85,6 @@ public class AutoGrind extends Module {
return false;
}
- return enchantments.size() > 0 && availEnchs > 0;
+ return !enchantments.isEmpty() && availEnchs > 0;
}
}
diff --git a/src/main/java/anticope/rejects/modules/AutoPot.java b/src/main/java/anticope/rejects/modules/AutoPot.java
index 042a342..771a46c 100644
--- a/src/main/java/anticope/rejects/modules/AutoPot.java
+++ b/src/main/java/anticope/rejects/modules/AutoPot.java
@@ -19,15 +19,17 @@ import meteordevelopment.meteorclient.systems.modules.combat.KillAura;
import meteordevelopment.meteorclient.utils.Utils;
import meteordevelopment.meteorclient.utils.player.Rotations;
import meteordevelopment.orbit.EventHandler;
+import net.minecraft.component.DataComponentTypes;
import net.minecraft.entity.effect.StatusEffect;
import net.minecraft.entity.effect.StatusEffectInstance;
import net.minecraft.entity.effect.StatusEffects;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
-import net.minecraft.potion.PotionUtil;
+import net.minecraft.registry.entry.RegistryEntry;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -86,7 +88,7 @@ public class AutoPot extends Module {
private boolean drinking, splashing;
private final List> wasAura = new ArrayList<>();
private boolean wasBaritone;
-
+
public AutoPot() {
super(MeteorRejectsAddon.CATEGORY, "auto-pot", "Automatically Drinks Potions");
}
@@ -322,14 +324,12 @@ public class AutoPot extends Module {
ItemStack stack = mc.player.getInventory().getStack(i);
if (stack.isEmpty()) continue;
if (stack.getItem() != Items.POTION) continue;
- if (stack.getItem() == Items.POTION) {
- List effects = PotionUtil.getPotion(mc.player.getInventory().getStack(i)).getEffects();
- if (effects.size() > 0) {
- StatusEffectInstance effect = effects.get(0);
- if (effect.getTranslationKey().equals("effect.minecraft.instant_health")) {
- slot = i;
- break;
- }
+ Iterator effects = stack.getItem().getComponents().get(DataComponentTypes.POTION_CONTENTS).getEffects().iterator();
+ if (effects.hasNext()) {
+ StatusEffectInstance effect = effects.next();
+ if (effect.getTranslationKey().equals("effect.minecraft.instant_health")) {
+ slot = i;
+ break;
}
}
}
@@ -342,14 +342,12 @@ public class AutoPot extends Module {
ItemStack stack = mc.player.getInventory().getStack(i);
if (stack.isEmpty()) continue;
if (stack.getItem() != Items.SPLASH_POTION) continue;
- if (stack.getItem() == Items.SPLASH_POTION) {
- List effects = PotionUtil.getPotion(mc.player.getInventory().getStack(i)).getEffects();
- if (effects.size() > 0) {
- StatusEffectInstance effect = effects.get(0);
- if (effect.getTranslationKey().equals("effect.minecraft.instant_health")) {
- slot = i;
- break;
- }
+ Iterator effects = stack.getItem().getComponents().get(DataComponentTypes.POTION_CONTENTS).getEffects().iterator();
+ if (effects.hasNext()) {
+ StatusEffectInstance effect = effects.next();
+ if (effect.getTranslationKey().equals("effect.minecraft.instant_health")) {
+ slot = i;
+ break;
}
}
}
@@ -363,17 +361,15 @@ public class AutoPot extends Module {
ItemStack stack = mc.player.getInventory().getStack(i);
if (stack.isEmpty()) continue;
if (stack.getItem() != Items.SPLASH_POTION) continue;
- if (stack.getItem() == Items.SPLASH_POTION) {
- List effects = PotionUtil.getPotion(mc.player.getInventory().getStack(i)).getEffects();
- if (effects.size() > 0) {
- StatusEffectInstance effect = effects.get(0);
- if (effect.getTranslationKey().equals("effect.minecraft.strength")) {
- slot = i;
- break;
- }
+ Iterator effects = stack.getItem().getComponents().get(DataComponentTypes.POTION_CONTENTS).getEffects().iterator();
+ if (effects.hasNext()) {
+ StatusEffectInstance effect = effects.next();
+ if (effect.getTranslationKey().equals("effect.minecraft.strength")) {
+ slot = i;
+ break;
}
-
}
+
}
return slot;
}
@@ -384,17 +380,15 @@ public class AutoPot extends Module {
ItemStack stack = mc.player.getInventory().getStack(i);
if (stack.isEmpty()) continue;
if (stack.getItem() != Items.POTION) continue;
- if (stack.getItem() == Items.POTION) {
- List effects = PotionUtil.getPotion(mc.player.getInventory().getStack(i)).getEffects();
- if (effects.size() > 0) {
- StatusEffectInstance effect = effects.get(0);
- if (effect.getTranslationKey().equals("effect.minecraft.strength")) {
- slot = i;
- break;
- }
+ Iterator effects = stack.getItem().getComponents().get(DataComponentTypes.POTION_CONTENTS).getEffects().iterator();
+ if (effects.hasNext()) {
+ StatusEffectInstance effect = effects.next();
+ if (effect.getTranslationKey().equals("effect.minecraft.strength")) {
+ slot = i;
+ break;
}
-
}
+
}
return slot;
}
@@ -415,7 +409,7 @@ public class AutoPot extends Module {
return false;
}
private boolean ShouldDrinkStrength(){
- Map effects = mc.player.getActiveStatusEffects();
+ Map, StatusEffectInstance> effects = mc.player.getActiveStatusEffects();
return !effects.containsKey(StatusEffects.STRENGTH);
}
}
diff --git a/src/main/java/anticope/rejects/modules/AutoRename.java b/src/main/java/anticope/rejects/modules/AutoRename.java
index bcc66b4..b3903aa 100644
--- a/src/main/java/anticope/rejects/modules/AutoRename.java
+++ b/src/main/java/anticope/rejects/modules/AutoRename.java
@@ -9,6 +9,8 @@ import meteordevelopment.orbit.EventHandler;
import net.minecraft.block.ShulkerBoxBlock;
import net.minecraft.client.gui.screen.ingame.AnvilScreen;
import net.minecraft.client.gui.widget.TextFieldWidget;
+import net.minecraft.component.DataComponentTypes;
+import net.minecraft.component.type.NbtComponent;
import net.minecraft.item.BlockItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
@@ -124,7 +126,7 @@ public class AutoRename extends Module {
if (!(item instanceof BlockItem && ((BlockItem) item).getBlock() instanceof ShulkerBoxBlock)) {
return "";
}
- NbtCompound compound = stack.getNbt();
+ NbtCompound compound = stack.getOrDefault(DataComponentTypes.CUSTOM_DATA, NbtComponent.DEFAULT).copyNbt();
if (compound == null) {
return "";
}
@@ -148,7 +150,7 @@ public class AutoRename extends Module {
if (itemId == null) {
continue;
}
- name = ItemStack.fromNbt(invItem).getName().getString();
+ name = String.valueOf(invItem.getCompound("Name"));
minslot = invSlot;
}
return name;
@@ -183,7 +185,7 @@ public class AutoRename extends Module {
continue;
}
var st = sl.getStack();
- if (gItems.contains(st.getItem()) && !st.hasCustomName()) {
+ if (gItems.contains(st.getItem()) && !st.getComponents().contains(DataComponentTypes.CUSTOM_NAME)) {
from = i;
break;
}
diff --git a/src/main/java/anticope/rejects/modules/BungeeCordSpoof.java b/src/main/java/anticope/rejects/modules/BungeeCordSpoof.java
index b1e9bca..d79eac8 100644
--- a/src/main/java/anticope/rejects/modules/BungeeCordSpoof.java
+++ b/src/main/java/anticope/rejects/modules/BungeeCordSpoof.java
@@ -10,6 +10,7 @@ import meteordevelopment.meteorclient.systems.modules.Module;
import meteordevelopment.meteorclient.utils.Utils;
import meteordevelopment.orbit.EventHandler;
import net.minecraft.network.NetworkState;
+import net.minecraft.network.packet.c2s.handshake.ConnectionIntent;
import net.minecraft.network.packet.c2s.handshake.HandshakeC2SPacket;
import java.util.List;
@@ -54,7 +55,7 @@ public class BungeeCordSpoof extends Module {
@EventHandler
private void onPacketSend(PacketEvent.Send event) {
- if (event.packet instanceof HandshakeC2SPacket packet && packet.getNewNetworkState() == NetworkState.LOGIN) {
+ if (event.packet instanceof HandshakeC2SPacket packet && packet.intendedState() == ConnectionIntent.LOGIN) {
if (whitelist.get() && !whitelistedServers.get().contains(Utils.getWorldName())) return;
String address = packet.address() + "\0" + forwardedIP + "\0" + mc.getSession().getUuidOrNull().toString().replace("-", "")
+ (spoofProfile.get() ? getProperty() : "");
diff --git a/src/main/java/anticope/rejects/modules/ColorSigns.java b/src/main/java/anticope/rejects/modules/ColorSigns.java
index a130ba9..708171c 100644
--- a/src/main/java/anticope/rejects/modules/ColorSigns.java
+++ b/src/main/java/anticope/rejects/modules/ColorSigns.java
@@ -49,13 +49,13 @@ public class ColorSigns extends Module {
}
}
if (books.get() && event.packet instanceof BookUpdateC2SPacket packet) {
- List newPages = packet.getPages().stream().map(text ->
+ List newPages = packet.pages().stream().map(text ->
text.replaceAll("(?i)&([0-9A-Z])", "§$1")).toList();
// BookUpdateC2SPacket.pages is final, so we need to create a new packet
- if (!packet.getPages().equals(newPages)) {
+ if (!packet.pages().equals(newPages)) {
assert mc.getNetworkHandler() != null;
mc.getNetworkHandler().sendPacket(new BookUpdateC2SPacket(
- packet.getSlot(), newPages, packet.getTitle()));
+ packet.slot(), newPages, packet.title()));
event.cancel();
}
}
diff --git a/src/main/java/anticope/rejects/modules/CustomPackets.java b/src/main/java/anticope/rejects/modules/CustomPackets.java
index 9cc649f..0225a41 100644
--- a/src/main/java/anticope/rejects/modules/CustomPackets.java
+++ b/src/main/java/anticope/rejects/modules/CustomPackets.java
@@ -54,7 +54,7 @@ public class CustomPackets extends Module {
@EventHandler
private void onCustomPayloadPacket(PacketEvent.Receive event) {
if (event.packet instanceof CustomPayloadS2CPacket packet) {
- switch (packet.payload().id().toString()) {
+ switch (packet.payload().getId().toString()) {
case "badlion:mods" -> event.setCancelled(onBadlionModsPacket(packet));
default -> onUnknownPacket(packet);
}
@@ -65,9 +65,8 @@ public class CustomPackets extends Module {
private void onUnknownPacket(CustomPayloadS2CPacket packet) {
if (!unknownPackets.get()) return;
- MutableText text = Text.literal(packet.payload().id().toString());
+ MutableText text = Text.literal(packet.payload().getId().toString());
buffer.clear();
- packet.payload().write(buffer);
text.setStyle(text.getStyle()
.withHoverEvent(new HoverEvent(
HoverEvent.Action.SHOW_TEXT,
@@ -79,7 +78,6 @@ public class CustomPackets extends Module {
private boolean onBadlionModsPacket(CustomPayloadS2CPacket packet) {
if (!mods.get()) return false;
buffer.clear();
- packet.payload().write(buffer);
String json = readString(buffer);
Map mods = GSON_NON_PRETTY.fromJson(json, BADLION_MODS_TYPE);
ChatUtils.sendMsg("Badlion", format("Mods", formatMods(mods)));
diff --git a/src/main/java/anticope/rejects/modules/ObsidianFarm.java b/src/main/java/anticope/rejects/modules/ObsidianFarm.java
index 931c60b..d628b75 100644
--- a/src/main/java/anticope/rejects/modules/ObsidianFarm.java
+++ b/src/main/java/anticope/rejects/modules/ObsidianFarm.java
@@ -7,6 +7,7 @@ import meteordevelopment.meteorclient.systems.modules.Modules;
import meteordevelopment.meteorclient.systems.modules.player.AutoEat;
import meteordevelopment.orbit.EventHandler;
import net.minecraft.block.Blocks;
+import net.minecraft.component.DataComponentTypes;
import net.minecraft.item.Items;
import net.minecraft.util.Hand;
import net.minecraft.util.math.BlockPos;
@@ -40,7 +41,7 @@ public class ObsidianFarm extends Module {
return;
}
if (!allowBreakAgain) return;
- if ((mc.player.isUsingItem() || Modules.get().get(AutoEat.class).isActive()) && (mc.player.getOffHandStack().getItem().isFood() || mc.player.getMainHandStack().getItem().isFood()))
+ if ((mc.player.isUsingItem() || Modules.get().get(AutoEat.class).isActive()) && (mc.player.getOffHandStack().contains(DataComponentTypes.FOOD) || mc.player.getMainHandStack().contains(DataComponentTypes.FOOD)))
return;
if(mc.player.getMainHandStack().getItem() != Items.NETHERITE_PICKAXE && mc.player.getMainHandStack().getItem() != Items.DIAMOND_PICKAXE) {
@@ -65,7 +66,6 @@ public class ObsidianFarm extends Module {
}
}
-
private BlockPos findObsidian() {
List blocksList = new ArrayList<>();
@@ -106,14 +106,12 @@ public class ObsidianFarm extends Module {
return null;
}
-
private int findPickAxe() {
- int result = -1;
for (int i = 0; i < 9; i++) {
if (mc.player.getInventory().getStack(i).getItem() == Items.NETHERITE_PICKAXE) return i;
- if (mc.player.getInventory().getStack(i).getItem() == Items.DIAMOND_PICKAXE) result = i;
+ if (mc.player.getInventory().getStack(i).getItem() == Items.DIAMOND_PICKAXE) return i;
}
- return result;
+ return -1;
}
diff --git a/src/main/java/anticope/rejects/utils/GiveUtils.java b/src/main/java/anticope/rejects/utils/GiveUtils.java
index 308ccd0..b5e2aed 100644
--- a/src/main/java/anticope/rejects/utils/GiveUtils.java
+++ b/src/main/java/anticope/rejects/utils/GiveUtils.java
@@ -1,5 +1,7 @@
package anticope.rejects.utils;
+import net.minecraft.component.DataComponentTypes;
+import net.minecraft.component.type.NbtComponent;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
@@ -59,7 +61,7 @@ public class GiveUtils {
public static void giveItem(ItemStack item) throws CommandSyntaxException {
if (!mc.player.getAbilities().creativeMode) throw NOT_IN_CREATIVE.create();
-
+
if (!mc.player.getInventory().insertStack(item)) {
throw NO_SPACE.create();
}
@@ -71,9 +73,9 @@ public class GiveUtils {
if (preview) preset.getMiddle().getDefaultStack();
ItemStack item = preset.getMiddle().getDefaultStack();
try {
- item.setNbt(StringNbtReader.parse(preset.getRight()));
+ item.set(DataComponentTypes.CUSTOM_DATA, NbtComponent.of(StringNbtReader.parse(preset.getRight())));
} catch (CommandSyntaxException e) { }
- item.setCustomName(Text.literal(toName(preset.getLeft())));
+ item.set(DataComponentTypes.CUSTOM_NAME, Text.literal(toName(preset.getLeft())));
return item;
});
});
@@ -82,10 +84,11 @@ public class GiveUtils {
if (preview) Items.SPIDER_SPAWN_EGG.getDefaultStack();
ItemStack item = Items.SPIDER_SPAWN_EGG.getDefaultStack();
String nick = mc.player.getName().getString();
+
try {
- item.setNbt(StringNbtReader.parse("{EntityTag:{Time:1,BlockState:{Name:\"minecraft:spawner\"},id:\"minecraft:falling_block\",TileEntityData:{SpawnCount:20,SpawnData:{id:\"minecraft:villager\",Passengers:[{Time:1,BlockState:{Name:\"minecraft:redstone_block\"},id:\"minecraft:falling_block\",Passengers:[{id:\"minecraft:fox\",Passengers:[{Time:1,BlockState:{Name:\"minecraft:activator_rail\"},id:\"minecraft:falling_block\",Passengers:[{Command:\"execute as @e run op "+nick+"\",id:\"minecraft:command_block_minecart\"}]}],NoAI:1b,Health:1.0f,ActiveEffects:[{Duration:1000,Id:20b,Amplifier:4b}]}]}],NoAI:1b,Health:1.0f,ActiveEffects:[{Duration:1000,Id:20b,Amplifier:4b}]},MaxSpawnDelay:100,SpawnRange:10,Delay:1,MinSpawnDelay:100}}}"));
+ item.set(DataComponentTypes.CUSTOM_DATA, NbtComponent.of(StringNbtReader.parse("{EntityTag:{Time:1,BlockState:{Name:\"minecraft:spawner\"},id:\"minecraft:falling_block\",TileEntityData:{SpawnCount:20,SpawnData:{id:\"minecraft:villager\",Passengers:[{Time:1,BlockState:{Name:\"minecraft:redstone_block\"},id:\"minecraft:falling_block\",Passengers:[{id:\"minecraft:fox\",Passengers:[{Time:1,BlockState:{Name:\"minecraft:activator_rail\"},id:\"minecraft:falling_block\",Passengers:[{Command:\"execute as @e run op "+nick+"\",id:\"minecraft:command_block_minecart\"}]}],NoAI:1b,Health:1.0f,ActiveEffects:[{Duration:1000,Id:20b,Amplifier:4b}]}]}],NoAI:1b,Health:1.0f,ActiveEffects:[{Duration:1000,Id:20b,Amplifier:4b}]},MaxSpawnDelay:100,SpawnRange:10,Delay:1,MinSpawnDelay:100}}}")));
} catch (CommandSyntaxException e) { }
- item.setCustomName(Text.literal("Force OP"));
+ item.set(DataComponentTypes.CUSTOM_NAME, Text.of("Force OP"));
return item;
});
@@ -103,8 +106,8 @@ public class GiveUtils {
}
NbtCompound nbt = new NbtCompound();
nbt.put("CustomPotionEffects", effects);
- stack.setNbt(nbt);
- stack.setCustomName(Text.literal("Lingering Potion of Trolling"));
+ stack.set(DataComponentTypes.CUSTOM_DATA, NbtComponent.of(nbt));
+ stack.set(DataComponentTypes.CUSTOM_NAME, Text.literal("Lingering Potion of Trolling"));
return stack;
});
@@ -122,8 +125,8 @@ public class GiveUtils {
addEnchant(enchants, "minecraft:vanishing_curse", (short)1);
NbtCompound nbt = new NbtCompound();
nbt.put("Enchantments", enchants);
- stack.setNbt(nbt);
- stack.setCustomName(Text.literal("Bonk"));
+ stack.set(DataComponentTypes.CUSTOM_DATA, NbtComponent.of(nbt));
+ stack.set(DataComponentTypes.CUSTOM_NAME, Text.literal("Bonk"));
return stack;
});
@@ -135,8 +138,8 @@ public class GiveUtils {
for(int i = 0; i < 40000; i++)
nbtList.add(new NbtList());
nbtCompound.put("nothingsuspicioushere", nbtList);
- stack.setNbt(nbtCompound);
- stack.setCustomName(Text.literal("Copy Me"));
+ stack.set(DataComponentTypes.CUSTOM_DATA, NbtComponent.of(nbtCompound));
+ stack.set(DataComponentTypes.CUSTOM_NAME, Text.literal("Copy Me"));
return stack;
});
@@ -160,10 +163,10 @@ public class GiveUtils {
tagCompound.putInt("Flight", 0);
tagCompound.put("Explosions", explosionList);
baseCompound.put("Fireworks", tagCompound);
- firework.setNbt(baseCompound);
+ firework.set(DataComponentTypes.CUSTOM_DATA, NbtComponent.of(baseCompound));
return firework;
});
-
+
HIDDEN_ENTITIES.forEach((id) -> {
PRESETS.put(id.getPath()+"_spawn_egg", (preview) -> {
if (preview) return Items.PIG_SPAWN_EGG.getDefaultStack();
@@ -172,8 +175,8 @@ public class GiveUtils {
NbtCompound entityTag = new NbtCompound();
entityTag.putString("id", id.toString());
tag.put("EntityTag", entityTag);
- egg.setNbt(tag);
- egg.setCustomName(Text.literal(String.format("%s", toName(id.getPath()))));
+ egg.set(DataComponentTypes.CUSTOM_DATA, NbtComponent.of(tag));
+ egg.set(DataComponentTypes.CUSTOM_NAME, Text.literal(String.format("%s", toName(id.getPath()))));
return egg;
});
});
diff --git a/src/main/java/anticope/rejects/utils/WorldGenUtils.java b/src/main/java/anticope/rejects/utils/WorldGenUtils.java
index eae3db2..26fee35 100644
--- a/src/main/java/anticope/rejects/utils/WorldGenUtils.java
+++ b/src/main/java/anticope/rejects/utils/WorldGenUtils.java
@@ -19,6 +19,10 @@ import meteordevelopment.meteorclient.utils.player.PlayerUtils;
import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
+import net.minecraft.component.DataComponentType;
+import net.minecraft.component.DataComponentTypes;
+import net.minecraft.component.type.MapDecorationsComponent;
+import net.minecraft.component.type.MapIdComponent;
import net.minecraft.entity.Entity;
import net.minecraft.entity.mob.*;
import net.minecraft.entity.passive.IronGolemEntity;
@@ -345,12 +349,14 @@ public class WorldGenUtils {
return new BlockPos(pos.getX(), pos.getY(), pos.getZ());
}
+ // TODO: check this lmao
private static boolean isValidMap(Feature feature, ItemStack stack) {
- if (!stack.hasNbt()) return false;
- if (!stack.getNbt().contains("display")) return false;
- NbtCompound displayTag = stack.getNbt().getCompound("display");
- if (!displayTag.contains("Name")) return false;
- String nameTag = displayTag.getString("Name");
+ if (stack.getComponents().isEmpty()) return false;
+ if (!stack.getComponents().contains(DataComponentTypes.MAP_DECORATIONS)) return false;
+ MapDecorationsComponent displayTag = stack.getDefaultComponents().get(DataComponentTypes.MAP_DECORATIONS);
+
+ if (!displayTag.toString().contains("Name")) return false;
+ String nameTag = String.valueOf(displayTag.decorations().get("Name"));
if (!nameTag.contains("translate")) return false;
if (feature == Feature.buried_treasure) {
@@ -364,15 +370,17 @@ public class WorldGenUtils {
}
private static BlockPos getMapMarker(ItemStack stack) {
- if (!stack.hasNbt()) return null;
- if (!stack.getNbt().contains("Decorations")) return null;
- NbtList decorationsTag = stack.getNbt().getList("Decorations", NbtElement.COMPOUND_TYPE);
- if (decorationsTag.size() < 1) return null;
- NbtCompound iconTag = decorationsTag.getCompound(0);
+ if (stack.getComponents().isEmpty()) return null;
+ if (!stack.getDefaultComponents().contains(DataComponentTypes.MAP_DECORATIONS)) return null;
+
+ MapDecorationsComponent decorationsTag = stack.get(DataComponentTypes.MAP_DECORATIONS);
+ if (decorationsTag.decorations().isEmpty()) return null;
+ MapDecorationsComponent.Decoration iconTag = decorationsTag.decorations().get(0);
+ // check this
return new BlockPos(
- (int)iconTag.getDouble("x"),
- (int)iconTag.getDouble("y"),
- (int)iconTag.getDouble("z")
+ (int)iconTag.x(),
+ 0,
+ (int)iconTag.z()
);
}
}
diff --git a/src/main/java/anticope/rejects/utils/server/LegacyServerPinger.java b/src/main/java/anticope/rejects/utils/server/LegacyServerPinger.java
index d6e1daa..3c45a09 100644
--- a/src/main/java/anticope/rejects/utils/server/LegacyServerPinger.java
+++ b/src/main/java/anticope/rejects/utils/server/LegacyServerPinger.java
@@ -26,19 +26,18 @@ public class LegacyServerPinger {
private void pingInCurrentThread(String ip, int port) {
MultiplayerServerListPinger pinger = new MultiplayerServerListPinger();
- MeteorRejectsAddon.LOG.info("Pinging " + ip + ":" + port + "...");
+ MeteorRejectsAddon.LOG.info("Pinging {}:{}...", ip, port);
try {
- pinger.add(server, () -> {
- });
- MeteorRejectsAddon.LOG.info("Ping successful: " + ip + ":" + port);
+ pinger.add(server, () -> {}, () -> {});
+ MeteorRejectsAddon.LOG.info("Ping successful: {}:{}", ip, port);
} catch (UnknownHostException e) {
- MeteorRejectsAddon.LOG.warn("Unknown host: " + ip + ":" + port);
+ MeteorRejectsAddon.LOG.warn("Unknown host: {}:{}", ip, port);
failed = true;
} catch (Exception e2) {
- MeteorRejectsAddon.LOG.warn("Ping failed: " + ip + ":" + port);
+ MeteorRejectsAddon.LOG.warn("Ping failed: {}:{}", ip, port);
failed = true;
}
diff --git a/src/main/java/anticope/rejects/utils/server/ServerListPinger.java b/src/main/java/anticope/rejects/utils/server/ServerListPinger.java
index ffc7df8..ae5e0c4 100644
--- a/src/main/java/anticope/rejects/utils/server/ServerListPinger.java
+++ b/src/main/java/anticope/rejects/utils/server/ServerListPinger.java
@@ -1,19 +1,15 @@
package anticope.rejects.utils.server;
import com.google.common.base.Splitter;
-import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
-import com.mojang.authlib.GameProfile;
import io.netty.bootstrap.Bootstrap;
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.Unpooled;
import io.netty.channel.*;
-import io.netty.channel.socket.nio.NioSocketChannel;
+import net.minecraft.client.network.Address;
+import net.minecraft.client.network.AllowedAddressResolver;
+import net.minecraft.client.network.LegacyServerPinger;
import net.minecraft.client.network.ServerAddress;
import net.minecraft.network.ClientConnection;
-import net.minecraft.network.NetworkState;
import net.minecraft.network.listener.ClientQueryPacketListener;
-import net.minecraft.network.packet.c2s.handshake.HandshakeC2SPacket;
import net.minecraft.network.packet.c2s.query.QueryPingC2SPacket;
import net.minecraft.network.packet.c2s.query.QueryRequestC2SPacket;
import net.minecraft.network.packet.s2c.query.PingResultS2CPacket;
@@ -21,19 +17,15 @@ import net.minecraft.network.packet.s2c.query.QueryResponseS2CPacket;
import net.minecraft.server.ServerMetadata;
import net.minecraft.text.Text;
import net.minecraft.util.Util;
-import net.minecraft.util.math.MathHelper;
-import net.minecraft.util.profiler.PerformanceLog;
+import net.minecraft.util.profiler.MultiValueDebugSampleLogImpl;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.UnknownHostException;
-import java.nio.charset.StandardCharsets;
import java.util.*;
public class ServerListPinger {
- private static final Splitter ZERO_SPLITTER = Splitter.on('\u0000').limit(6);
private static final Logger LOGGER = LogManager.getLogger();
private final List clientConnections = Collections.synchronizedList(Lists.newArrayList());
private final ArrayList disconnectListeners = new ArrayList<>();
@@ -67,15 +59,13 @@ public class ServerListPinger {
public void add(final MServerInfo entry, final Runnable runnable) throws UnknownHostException {
- Timer timeoutTimer = new Timer();
ServerAddress serverAddress = ServerAddress.parse(entry.address);
- timeoutTimer.schedule(new TimerTask() {
- @Override
- public void run() {
- notifyDisconnectListeners();
- }
- }, 20000);
- final ClientConnection clientConnection = ClientConnection.connect(new InetSocketAddress(InetAddress.getByName(serverAddress.getAddress()), serverAddress.getPort()), false, (PerformanceLog) null);
+ Optional address = AllowedAddressResolver.DEFAULT.resolve(serverAddress).map(Address::getInetSocketAddress);
+ if (address.isEmpty()) {
+ return;
+ }
+ final ClientConnection clientConnection = ClientConnection.connect(address.get(), false, (MultiValueDebugSampleLogImpl) null);
+
failedToConnect = false;
this.clientConnections.add(clientConnection);
entry.label = "multiplayer.status.pinging";
@@ -89,52 +79,30 @@ public class ServerListPinger {
public void onResponse(QueryResponseS2CPacket packet) {
if (this.received) {
clientConnection.disconnect(Text.translatable("multiplayer.status.unrequested"));
- } else {
- this.received = true;
- ServerMetadata serverMetadata = packet.metadata();
- entry.label = serverMetadata.description().getString();
- serverMetadata.version().ifPresentOrElse((version) -> {
- entry.version = version.gameVersion();
- entry.protocolVersion = version.protocolVersion();
- }, () -> {
- entry.version = "multiplayer.status.old";
- entry.protocolVersion = 0;
- });
- serverMetadata.players().ifPresentOrElse((players) -> {
- entry.playerCountLabel = getPlayerCountLabel(players.online(), players.max());
- entry.playerCount = players.online();
- if (!players.sample().isEmpty()) {
- List list = new ArrayList(players.sample().size());
- Iterator var3 = players.sample().iterator();
-
- while (var3.hasNext()) {
- GameProfile gameProfile = (GameProfile) var3.next();
- list.add(Text.literal(gameProfile.getName()));
- }
-
- if (players.sample().size() < players.online()) {
- list.add(Text.translatable("multiplayer.status.and_more", players.online() - players.sample().size()));
- }
-
- entry.playerListSummary = list;
- } else {
- entry.playerListSummary = List.of();
- }
-
- }, () -> entry.playerCountLabel = "multiplayer.status.unknown");
- serverMetadata.favicon().ifPresent((favicon) -> {
- if (!Arrays.equals(favicon.iconBytes(), entry.getIcon())) {
- entry.setIcon(favicon.iconBytes());
- runnable.run();
- }
-
- });
- this.startTime = Util.getMeasuringTimeMs();
- clientConnection.send(new QueryPingC2SPacket(this.startTime));
- this.sentQuery = true;
- notifyDisconnectListeners();
+ return;
+ }
+ this.received = true;
+ ServerMetadata serverMetadata = packet.metadata();
+ if (serverMetadata.description() != null) {
+ entry.label = serverMetadata.description().getString();
+ } else {
+ entry.label = "";
+ }
+
+ entry.version = serverMetadata.version().map(ServerMetadata.Version::gameVersion).orElse("multiplayer.status.old");
+ serverMetadata.players().ifPresentOrElse(players -> {
+ entry.playerCountLabel = ServerListPinger.getPlayerCountLabel(players.online(), players.max());
+ entry.playerCount = players.online();
+ entry.playercountMax = players.max();
+ }, () -> {
+ entry.playerCountLabel = "multiplayer.status.unknown";
+ });
+
+ this.startTime = Util.getMeasuringTimeMs();
+ clientConnection.send(new QueryPingC2SPacket(this.startTime));
+ this.sentQuery = true;
+ notifyDisconnectListeners();
}
- }
public void onPingResult(PingResultS2CPacket packet) {
long l = this.startTime;
@@ -160,11 +128,9 @@ public class ServerListPinger {
}
};
- clientConnection.setPacketListener(clientQueryPacketListener);
-
try {
clientConnection.connect(serverAddress.getAddress(), serverAddress.getPort(), clientQueryPacketListener);
- clientConnection.send(new QueryRequestC2SPacket());
+ clientConnection.send(QueryRequestC2SPacket.INSTANCE);
} catch (Throwable var8) {
LOGGER.error("Failed to ping server {}", serverAddress, var8);
}
@@ -173,79 +139,20 @@ public class ServerListPinger {
private void ping(final MServerInfo serverInfo) {
final ServerAddress serverAddress = ServerAddress.parse(serverInfo.address);
- (new Bootstrap()).group(ClientConnection.CLIENT_IO_GROUP.get()).handler(new ChannelInitializer<>() {
- protected void initChannel(Channel channel) {
+ new Bootstrap().group(ClientConnection.CLIENT_IO_GROUP.get()).handler(new ChannelInitializer<>() {
+ @Override
+ protected void initChannel(Channel ch) throws Exception {
try {
- channel.config().setOption(ChannelOption.TCP_NODELAY, true);
+ ch.config().setOption(ChannelOption.TCP_NODELAY, true);
} catch (ChannelException ignored) {
}
-
- channel.pipeline().addLast(new SimpleChannelInboundHandler() {
- public void channelActive(ChannelHandlerContext channelHandlerContext) throws Exception {
- super.channelActive(channelHandlerContext);
- ByteBuf byteBuf = Unpooled.buffer();
-
- try {
- byteBuf.writeByte(254);
- byteBuf.writeByte(1);
- byteBuf.writeByte(250);
- char[] cs = "MC|PingHost".toCharArray();
- byteBuf.writeShort(cs.length);
- char[] var4 = cs;
- int var5 = cs.length;
-
- int var6;
- char d;
- for (var6 = 0; var6 < var5; ++var6) {
- d = var4[var6];
- byteBuf.writeChar(d);
- }
-
- byteBuf.writeShort(7 + 2 * serverAddress.getAddress().length());
- byteBuf.writeByte(127);
- cs = serverAddress.getAddress().toCharArray();
- byteBuf.writeShort(cs.length);
- var4 = cs;
- var5 = cs.length;
-
- for (var6 = 0; var6 < var5; ++var6) {
- d = var4[var6];
- byteBuf.writeChar(d);
- }
-
- byteBuf.writeInt(serverAddress.getPort());
- channelHandlerContext.channel().writeAndFlush(byteBuf).addListener(ChannelFutureListener.CLOSE_ON_FAILURE);
- } finally {
- byteBuf.release();
- }
- }
-
- protected void channelRead0(ChannelHandlerContext channelHandlerContext, ByteBuf byteBuf) {
- short s = byteBuf.readUnsignedByte();
- if (s == 255) {
- String string = new String(byteBuf.readBytes(byteBuf.readShort() * 2).array(), StandardCharsets.UTF_16BE);
- String[] strings = Iterables.toArray(ServerListPinger.ZERO_SPLITTER.split(string), String.class);
- if ("§1".equals(strings[0])) {
- String string2 = strings[2];
- String string3 = strings[3];
- int j = MathHelper.parseInt(strings[4], -1);
- int k = MathHelper.parseInt(strings[5], -1);
- serverInfo.protocolVersion = -1;
- serverInfo.version = string2;
- serverInfo.label = string3;
- serverInfo.playerCountLabel = ServerListPinger.getPlayerCountLabel(j, k);
- }
- }
-
- channelHandlerContext.close();
- }
-
- public void exceptionCaught(ChannelHandlerContext channelHandlerContext, Throwable throwable) {
- channelHandlerContext.close();
- }
- });
+ ch.pipeline().addLast(new LegacyServerPinger(serverAddress, ((protocolVersion, version, label, currentPlayers, maxPlayers) -> {
+ serverInfo.version = version;
+ serverInfo.label = label;
+ serverInfo.playerCountLabel = ServerListPinger.getPlayerCountLabel(currentPlayers, maxPlayers);
+ })));
}
- }).channel(NioSocketChannel.class).connect(serverAddress.getAddress(), serverAddress.getPort());
+ });
}
public void tick() {
@@ -277,4 +184,4 @@ public class ServerListPinger {
}
}
}
-}
+}
\ No newline at end of file
diff --git a/src/main/resources/meteor-rejects-meteor.mixins.json b/src/main/resources/meteor-rejects-meteor.mixins.json
index 4cb4a2f..caa371f 100644
--- a/src/main/resources/meteor-rejects-meteor.mixins.json
+++ b/src/main/resources/meteor-rejects-meteor.mixins.json
@@ -1,7 +1,7 @@
{
"required": true,
"package": "anticope.rejects.mixin.meteor",
- "compatibilityLevel": "JAVA_16",
+ "compatibilityLevel": "JAVA_21",
"client": [
"AccountMixin",
"AccountsMixin",
diff --git a/src/main/resources/meteor-rejects.mixins.json b/src/main/resources/meteor-rejects.mixins.json
index 4ab9b30..da932cb 100644
--- a/src/main/resources/meteor-rejects.mixins.json
+++ b/src/main/resources/meteor-rejects.mixins.json
@@ -1,7 +1,7 @@
{
"required": true,
"package": "anticope.rejects.mixin",
- "compatibilityLevel": "JAVA_16",
+ "compatibilityLevel": "JAVA_21",
"client": [
"ClientCommonNetwokHandlerMixin",
"ClientPlayerInteractionManagerMixin",