diff options
author | HacktheTime <l4bg0jb7@duck.com> | 2023-08-09 20:46:00 +0200 |
---|---|---|
committer | HacktheTime <l4bg0jb7@duck.com> | 2023-08-09 20:46:00 +0200 |
commit | 2cd5f8e6bd42a084022028adcc24ef566fddab95 (patch) | |
tree | e06a18df40629371c33b9efce971489812696ac0 /src/main/java/de/hype/bbsentials/mixins | |
download | BBsentials-2cd5f8e6bd42a084022028adcc24ef566fddab95.tar.gz BBsentials-2cd5f8e6bd42a084022028adcc24ef566fddab95.tar.bz2 BBsentials-2cd5f8e6bd42a084022028adcc24ef566fddab95.zip |
Initial commit
Diffstat (limited to 'src/main/java/de/hype/bbsentials/mixins')
4 files changed, 158 insertions, 0 deletions
diff --git a/src/main/java/de/hype/bbsentials/mixins/ClientCommandSourceMixin.java b/src/main/java/de/hype/bbsentials/mixins/ClientCommandSourceMixin.java new file mode 100644 index 0000000..edbe487 --- /dev/null +++ b/src/main/java/de/hype/bbsentials/mixins/ClientCommandSourceMixin.java @@ -0,0 +1,56 @@ +package de.hype.bbsentials.mixins; + +import com.google.common.collect.Lists; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.network.ClientCommandSource; +import net.minecraft.client.network.ClientPlayNetworkHandler; +import net.minecraft.client.network.PlayerListEntry; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.Shadow; + +import java.util.Collection; +import java.util.Iterator; +import java.util.List; + +@Environment(EnvType.CLIENT) +@Mixin(ClientCommandSource.class) +public abstract class ClientCommandSourceMixin { + @Shadow + private final ClientPlayNetworkHandler networkHandler; + private final MinecraftClient client; + @Final + private List<PlayerListEntry> playerList; + + /** + * @return Collection of player names. + * @author HacktheTime + * @reason Remove hypixels dummy players from the list. + * Overwrites the getPlayerNames() method with the new implementation. + * This method returns a collection of player names from the playerList. + * This method is now also used by server-side commands. + */ + @Overwrite + public Collection<String> getPlayerNames() { + List<String> list = Lists.newArrayList(); + Iterator var2 = this.networkHandler.getPlayerList().iterator(); + + while (var2.hasNext()) { + PlayerListEntry playerListEntry = (PlayerListEntry) var2.next(); + String playerName = playerListEntry.getProfile().getName(); + if (!playerName.startsWith("!")) { + list.add(playerName); + } + } + + return list; + } + + public ClientCommandSourceMixin(ClientPlayNetworkHandler networkHandler) { + this.networkHandler = networkHandler; + this.client = MinecraftClient.getInstance(); + } +} diff --git a/src/main/java/de/hype/bbsentials/mixins/ItemRendererMixin.java b/src/main/java/de/hype/bbsentials/mixins/ItemRendererMixin.java new file mode 100644 index 0000000..d0d3290 --- /dev/null +++ b/src/main/java/de/hype/bbsentials/mixins/ItemRendererMixin.java @@ -0,0 +1,43 @@ +package de.hype.bbsentials.mixins; + +import de.hype.bbsentials.chat.Chat; +import de.hype.bbsentials.client.BBsentials; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.render.VertexConsumerProvider; +import net.minecraft.client.render.item.ItemRenderer; +import net.minecraft.client.render.model.BakedModel; +import net.minecraft.client.render.model.json.ModelTransformationMode; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.item.ItemStack; +import net.minecraft.text.Text; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(ItemRenderer.class) +public class ItemRendererMixin { + @Shadow + @Final + private MinecraftClient client; + + @Inject(method = "renderItem", at = @At("HEAD"), cancellable = true) + private void renderItemMixin(ItemStack stack, ModelTransformationMode renderMode, boolean leftHanded, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, int overlay, BakedModel model, CallbackInfo ci) { + if (BBsentials.config.highlightitem) { + setCustomName(stack, BBsentials.bbserver.getItemName()); + } + } + + @Unique + private void setCustomName(ItemStack stack, String triggerName) { + String temp = stack.getName().getString(); + if ((!temp.contains("Splash")) && temp.contains(triggerName)) { + String tem2 = stack.getNbt().getString("Display"); + Chat.sendPrivateMessageToSelf(tem2); + stack.setCustomName(Text.literal("§6(Bingo Splash) " + temp)); + } + } +} diff --git a/src/main/java/de/hype/bbsentials/mixins/ScreenMixin.java b/src/main/java/de/hype/bbsentials/mixins/ScreenMixin.java new file mode 100644 index 0000000..e046e25 --- /dev/null +++ b/src/main/java/de/hype/bbsentials/mixins/ScreenMixin.java @@ -0,0 +1,26 @@ +package de.hype.bbsentials.mixins; + +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.item.ItemStack; +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.CallbackInfoReturnable; + +import java.util.List; + +@Mixin(Screen.class) +public class ScreenMixin { + @Inject(method = "getTooltipFromItem", at = @At("RETURN"), cancellable = true) + private static void getTooltipFromItem(MinecraftClient client, ItemStack stack, CallbackInfoReturnable<List<Text>> ci) { + /*// Cancel the original method + List<Text> temp = ci.getReturnValue(); + temp.add(1,Text.literal("§6Splash on going by missing")); + ci.setReturnValue(temp);*/ + + //TODO this is an only visual addition for time tooltip. + // This means it can be used to add data the server cant see. + } +} diff --git a/src/main/java/de/hype/bbsentials/mixins/SimpleOptionMixin.java b/src/main/java/de/hype/bbsentials/mixins/SimpleOptionMixin.java new file mode 100644 index 0000000..7444788 --- /dev/null +++ b/src/main/java/de/hype/bbsentials/mixins/SimpleOptionMixin.java @@ -0,0 +1,33 @@ +package de.hype.bbsentials.mixins; + +import de.hype.bbsentials.api.ISimpleOption; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.option.SimpleOption; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +import java.util.Objects; +import java.util.function.Consumer; + +@Mixin(SimpleOption.class) +public class SimpleOptionMixin implements ISimpleOption { + @Shadow + Object value; + @Shadow + @Final + private Consumer<Object> changeCallback; + + @Override + public void set(Object value) { + if (!MinecraftClient.getInstance().isRunning()) { + this.value = value; + } + else { + if (!Objects.equals(this.value, value)) { + this.value = value; + this.changeCallback.accept(this.value); + } + } + } +} |