Skip to content

Commit

Permalink
add feature to move outline of structure saver by using numpad arrows
Browse files Browse the repository at this point in the history
  • Loading branch information
MelanX committed Mar 30, 2024
1 parent 5f6ff0d commit 69dc83b
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/main/java/de/melanx/skyblockbuilder/SkyblockBuilder.java
Expand Up @@ -2,6 +2,7 @@

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import de.melanx.skyblockbuilder.client.ClientEventListener;
import de.melanx.skyblockbuilder.compat.minemention.MineMentionCompat;
import de.melanx.skyblockbuilder.config.common.PermissionsConfig;
import de.melanx.skyblockbuilder.datagen.BlockStatesProvider;
Expand All @@ -12,7 +13,9 @@
import de.melanx.skyblockbuilder.template.TemplateLoader;
import de.melanx.skyblockbuilder.util.SkyPaths;
import net.minecraft.Util;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.DistExecutor;
import net.minecraftforge.fml.ModList;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
Expand Down Expand Up @@ -42,6 +45,8 @@ public SkyblockBuilder() {
this.network = new SkyNetwork();
this.logger = LoggerFactory.getLogger(SkyblockBuilder.class);

DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> ClientEventListener::new);

SkyPaths.createDirectories();
MinecraftForge.EVENT_BUS.register(new SpawnProtectionEvents());

Expand Down
@@ -1,18 +1,33 @@
package de.melanx.skyblockbuilder.client;

import com.mojang.blaze3d.platform.InputConstants;
import de.melanx.skyblockbuilder.ModBlocks;
import de.melanx.skyblockbuilder.ModItems;
import de.melanx.skyblockbuilder.Registration;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtUtils;
import net.minecraft.world.item.CreativeModeTabs;
import net.minecraft.world.item.ItemStack;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.client.event.InputEvent;
import net.minecraftforge.client.event.RegisterPresetEditorsEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.BuildCreativeModeTabContentsEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import org.lwjgl.glfw.GLFW;

@Mod.EventBusSubscriber(modid = "skyblockbuilder", value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD)
public class ClientEventListener {

public ClientEventListener() {
MinecraftForge.EVENT_BUS.addListener(this::onKeyInput);
}

@SubscribeEvent
public static void onRegisterPresetEditors(RegisterPresetEditorsEvent event) {
event.register(Registration.skyblockKey, ScreenCustomizeSkyblock::new);
Expand All @@ -25,4 +40,47 @@ public static void buildCreativeTabs(BuildCreativeModeTabContentsEvent event) {
event.accept(() -> ModBlocks.spawnBlock);
}
}

private void onKeyInput(InputEvent.Key event) {
if (event.getAction() != InputConstants.PRESS) {
return;
}

LocalPlayer player = Minecraft.getInstance().player;
if (player == null) {
return;
}

ItemStack stack = player.getMainHandItem();
if (!stack.is(ModItems.structureSaver)) {
return;
}

CompoundTag tag = stack.getOrCreateTag();
if (!tag.contains("Position1") || !tag.contains("Position2")) {
return;
}

Direction direction = switch (event.getKey()) {
case GLFW.GLFW_KEY_KP_8 -> player.getDirection();
case GLFW.GLFW_KEY_KP_2 -> player.getDirection().getOpposite();
case GLFW.GLFW_KEY_KP_4 -> player.getDirection().getCounterClockWise();
case GLFW.GLFW_KEY_KP_6 -> player.getDirection().getClockWise();
case GLFW.GLFW_KEY_KP_9 -> Direction.UP;
case GLFW.GLFW_KEY_KP_3 -> Direction.DOWN;
default -> null;
};

if (direction == null) {
return;
}

BlockPos pos1 = NbtUtils.readBlockPos(tag.getCompound("Position1"));
BlockPos pos2 = NbtUtils.readBlockPos(tag.getCompound("Position2"));

tag.put("Position1", NbtUtils.writeBlockPos(pos1.relative(direction)));
tag.put("Position2", NbtUtils.writeBlockPos(pos2.relative(direction)));

stack.setTag(tag);
}
}

0 comments on commit 69dc83b

Please sign in to comment.