--- /dev/null
+package com.irtimaled.bbor.litemod;
+
+import com.irtimaled.bbor.client.BoundingBoxOutlineReloaded;
+import com.mumfrey.liteloader.Tickable;
+import net.minecraft.client.Minecraft;
+
+import java.io.File;
+
+public class LiteMod implements Tickable {
+ public LiteMod() {
+ }
+
+ @Override
+ public String getName() {
+ return "BoundingBoxOutlineReloaded";
+ }
+
+ @Override
+ public String getVersion() {
+ return "1.0.1";
+ }
+
+ @Override
+ public void init(File configPath) {
+ BoundingBoxOutlineReloaded.init();
+ }
+
+ @Override
+ public void upgradeSettings(String version, File configPath, File oldConfigPath) {
+ }
+
+ @Override
+ public void onTick(Minecraft minecraft, float partialTicks, boolean inGame, boolean clock) {
+ BoundingBoxOutlineReloaded.keyPressed();
+ }
+}
--- /dev/null
+package com.irtimaled.bbor.litemod.mixins;
+
+import com.irtimaled.bbor.client.BoundingBoxOutlineReloaded;
+import net.minecraft.world.chunk.Chunk;
+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;
+
+@Mixin(Chunk.class)
+public abstract class MixinChunk {
+ @Inject(method = "onLoad",
+ at = @At("RETURN"))
+ private void onLoaded(CallbackInfo ci) {
+ BoundingBoxOutlineReloaded.chunkLoaded((Chunk)(Object)this);
+ }
+}
\ No newline at end of file
--- /dev/null
+package com.irtimaled.bbor.litemod.mixins;
+
+import com.irtimaled.bbor.client.BoundingBoxOutlineReloaded;
+import com.mumfrey.liteloader.client.overlays.IEntityRenderer;
+import net.minecraft.client.renderer.EntityRenderer;
+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;
+
+@Mixin(EntityRenderer.class)
+public abstract class MixinEntityRenderer implements IEntityRenderer {
+ @Inject(method = "renderWorldPass",
+ at = @At(shift = At.Shift.BEFORE,
+ value = "INVOKE_STRING",
+ target = "Lnet/minecraft/profiler/Profiler;endStartSection(Ljava/lang/String;)V",
+ args = "ldc=hand"))
+ private void onRenderHand(int pass, float partialTicks, long timeSlice, CallbackInfo ci) {
+ BoundingBoxOutlineReloaded.render(partialTicks);
+ }
+}
\ No newline at end of file
--- /dev/null
+package com.irtimaled.bbor.litemod.mixins;
+
+import com.irtimaled.bbor.client.BoundingBoxOutlineReloaded;
+import net.minecraft.server.MinecraftServer;
+import net.minecraft.server.integrated.IntegratedServer;
+import net.minecraft.world.World;
+import net.minecraft.world.WorldType;
+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;
+
+@Mixin(IntegratedServer.class)
+public abstract class MixinIntegratedServer extends MinecraftServer {
+ public MixinIntegratedServer() {
+ super(null, null, null, null, null, null, null);
+ }
+
+ @Inject(method = "loadAllWorlds",
+ at = @At("RETURN"),
+ remap = false)
+ private void onLoadAllWorlds(String saveName, String worldNameIn, long seed, WorldType type, String generatorOptions, CallbackInfo ci) {
+ for (World world : this.worlds) {
+ BoundingBoxOutlineReloaded.worldLoaded(world);
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+package com.irtimaled.bbor.litemod.mixins;
+
+import net.minecraft.client.resources.I18n;
+import net.minecraft.client.settings.KeyBinding;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.Overwrite;
+import org.spongepowered.asm.mixin.Shadow;
+
+import java.util.Map;
+
+@Mixin(KeyBinding.class)
+public abstract class MixinKeyBinding implements Comparable<KeyBinding> {
+ @Shadow
+ private static Map<String, Integer> CATEGORY_ORDER;
+
+ @Shadow
+ private String keyDescription;
+
+ @Shadow
+ private String keyCategory;
+
+ @Overwrite()
+ public int compareTo(KeyBinding p_compareTo_1_) {
+ return this.keyCategory.equals(p_compareTo_1_.getKeyCategory()) ? I18n.format(this.keyDescription).compareTo(I18n.format(p_compareTo_1_.getKeyDescription())) : ((Integer) CATEGORY_ORDER.getOrDefault(this.keyCategory, 0)).compareTo(CATEGORY_ORDER.getOrDefault(p_compareTo_1_.getKeyCategory(), 0));
+ }
+}
--- /dev/null
+package com.irtimaled.bbor.litemod.mixins;
+
+import com.irtimaled.bbor.client.BoundingBoxOutlineReloaded;
+import net.minecraft.network.NetworkManager;
+import net.minecraft.network.Packet;
+import net.minecraft.network.login.client.CPacketLoginStart;
+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;
+
+@Mixin(NetworkManager.class)
+public abstract class MixinNetworkManager {
+ @Inject(method = "sendPacket(Lnet/minecraft/network/Packet;)V",
+ at = @At("RETURN"))
+ private void onLoaded(Packet<?> packetIn, CallbackInfo ci) {
+ if (packetIn instanceof CPacketLoginStart) {
+ BoundingBoxOutlineReloaded.playerConnectedToServer((NetworkManager)(Object)this);
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+package com.irtimaled.bbor.litemod.mixins;
+
+import com.irtimaled.bbor.client.BoundingBoxOutlineReloaded;
+import net.minecraft.client.multiplayer.WorldClient;
+import net.minecraft.world.World;
+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;
+
+@Mixin(WorldClient.class)
+public abstract class MixinWorldClient extends World {
+ public MixinWorldClient() {
+ super(null, null, null, null, true);
+ }
+
+ @Inject(method = "sendQuittingDisconnectingPacket",
+ at = @At("RETURN"))
+ private void onDisconnecting(CallbackInfo ci) {
+ BoundingBoxOutlineReloaded.playerDisconnectedFromServer();
+ }
+}
--- /dev/null
+{
+ "name": "bbor",
+ "displayName": "BoundingBoxOutlineReloaded",
+ "description": "Shows the bounding boxes of structures and features.",
+ "version": "1.0.1",
+ "author": "irtimaled",
+ "mcversion": "1.12.1",
+ "mixinConfigs": [
+ "mixins.bbor.json"
+ ]
+}
--- /dev/null
+{
+ "required": true,
+ "minVersion": "0.7.3",
+ "compatibilityLevel": "JAVA_8",
+ "target": "@env(DEFAULT)",
+ "package": "com.irtimaled.bbor.litemod.mixins",
+ "refmap": "mixins.bbor.refmap.json",
+ "mixins": [
+ "MixinIntegratedServer",
+ "MixinEntityRenderer",
+ "MixinChunk",
+ "MixinNetworkManager",
+ "MixinWorldClient",
+ "MixinKeyBinding"
+ ],
+ "injectors": {
+ "defaultRequire": 1
+ }
+}
--- /dev/null
+{
+ "mappings": {
+ "com/irtimaled/bbor/litemod/mixins/MixinIntegratedServer": {
+ "loadAllWorlds": "Lchd;a(Ljava/lang/String;Ljava/lang/String;JLamz;Ljava/lang/String;)V"
+ },
+ "com/irtimaled/bbor/litemod/mixins/MixinNetworkManager": {
+ "sendPacket(Lnet/minecraft/network/Packet;)V": "Lgw;a(Lht;)V"
+ },
+ "com/irtimaled/bbor/litemod/mixins/MixinEntityRenderer": {
+ "Lnet/minecraft/profiler/Profiler;endStartSection(Ljava/lang/String;)V": "Lrl;c(Ljava/lang/String;)V",
+ "renderWorldPass": "Lbuq;a(IFJ)V"
+ },
+ "com/irtimaled/bbor/litemod/mixins/MixinWorldClient": {
+ "sendQuittingDisconnectingPacket": "Lbsb;O()V"
+ },
+ "com/irtimaled/bbor/litemod/mixins/MixinChunk": {
+ "onLoad": "Laxw;c()V"
+ },
+ "com/irtimaled/bbor/litemod/mixins/MixinKeyBinding": {
+ "compareTo": "Lbhy;a(Lbhy;)I"
+ }
+ },
+ "data": {
+ "notch": {
+ "com/irtimaled/bbor/litemod/mixins/MixinIntegratedServer": {
+ "loadAllWorlds": "Lchd;a(Ljava/lang/String;Ljava/lang/String;JLamz;Ljava/lang/String;)V"
+ },
+ "com/irtimaled/bbor/litemod/mixins/MixinNetworkManager": {
+ "sendPacket(Lnet/minecraft/network/Packet;)V": "Lgw;a(Lht;)V"
+ },
+ "com/irtimaled/bbor/litemod/mixins/MixinEntityRenderer": {
+ "Lnet/minecraft/profiler/Profiler;endStartSection(Ljava/lang/String;)V": "Lrl;c(Ljava/lang/String;)V",
+ "renderWorldPass": "Lbuq;a(IFJ)V"
+ },
+ "com/irtimaled/bbor/litemod/mixins/MixinWorldClient": {
+ "sendQuittingDisconnectingPacket": "Lbsb;O()V"
+ },
+ "com/irtimaled/bbor/litemod/mixins/MixinChunk": {
+ "onLoad": "Laxw;c()V"
+ },
+ "com/irtimaled/bbor/litemod/mixins/MixinKeyBinding": {
+ "compareTo": "Lbhy;a(Lbhy;)I"
+ }
+ },
+ "searge": {
+ "com/irtimaled/bbor/litemod/mixins/MixinIntegratedServer": {
+ "loadAllWorlds": "Lnet/minecraft/server/integrated/IntegratedServer;func_71247_a(Ljava/lang/String;Ljava/lang/String;JLnet/minecraft/world/WorldType;Ljava/lang/String;)V"
+ },
+ "com/irtimaled/bbor/litemod/mixins/MixinNetworkManager": {
+ "sendPacket(Lnet/minecraft/network/Packet;)V": "Lnet/minecraft/network/NetworkManager;func_179290_a(Lnet/minecraft/network/Packet;)V"
+ },
+ "com/irtimaled/bbor/litemod/mixins/MixinEntityRenderer": {
+ "Lnet/minecraft/profiler/Profiler;endStartSection(Ljava/lang/String;)V": "Lnet/minecraft/profiler/Profiler;func_76318_c(Ljava/lang/String;)V",
+ "renderWorldPass": "Lnet/minecraft/client/renderer/EntityRenderer;func_175068_a(IFJ)V"
+ },
+ "com/irtimaled/bbor/litemod/mixins/MixinWorldClient": {
+ "sendQuittingDisconnectingPacket": "Lnet/minecraft/client/multiplayer/WorldClient;func_72882_A()V"
+ },
+ "com/irtimaled/bbor/litemod/mixins/MixinChunk": {
+ "onLoad": "Lnet/minecraft/world/chunk/Chunk;func_76631_c()V"
+ },
+ "com/irtimaled/bbor/litemod/mixins/MixinKeyBinding": {
+ "compareTo": "Lnet/minecraft/client/settings/KeyBinding;compareTo(Lnet/minecraft/client/settings/KeyBinding;)I"
+ }
+ }
+ }
+}