Skip to content

Commit

Permalink
added a keybind to use a transmitter in your inventory
Browse files Browse the repository at this point in the history
  • Loading branch information
NewJumper committed Mar 30, 2024
1 parent c070364 commit 24cecd3
Show file tree
Hide file tree
Showing 11 changed files with 72 additions and 23 deletions.
@@ -1,2 +1,2 @@
// 1.20.1 2024-03-28T17:28:00.8019855 Languages: en_us
8bbd719a8776bc2ca9edc129a308156fee4253cb assets/deeperdarker/lang/en_us.json
// 1.20.1 2024-03-30T12:59:03.813707 Languages: en_us
e1ddfa4d3b64479bb8dcb4dc8c5927e6fa309ace assets/deeperdarker/lang/en_us.json
Expand Up @@ -228,6 +228,7 @@
"itemGroup.deeperdarker": "Deeper and Darker",
"key.categories.deeperdarker": "Deeper and Darker",
"key.deeperdarker.boost": "Boost Soul Elytra",
"key.deeperdarker.transmit": "Use Sculk Transmitter",
"subtitles.ambient.otherside.additions": "Warden dreams",
"subtitles.ambient.portal.groan": "The Otherside forebodes",
"subtitles.entity.shattered.ambient": "Shattered growls",
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/com/kyanite/deeperdarker/DeeperDarker.java
Expand Up @@ -18,6 +18,7 @@
import com.kyanite.deeperdarker.network.Messages;
import com.kyanite.deeperdarker.network.SoulElytraBoostPacket;
import com.kyanite.deeperdarker.network.SoulElytraClientPacket;
import com.kyanite.deeperdarker.network.UseTransmitterPacket;
import com.kyanite.deeperdarker.util.DDCreativeTab;
import com.kyanite.deeperdarker.util.DeeperDarkerConfig;
import com.kyanite.deeperdarker.world.DDFeatures;
Expand Down Expand Up @@ -249,6 +250,7 @@ public static void clientSetup(final FMLClientSetupEvent event) {
@SubscribeEvent
public static void registerKeybinds(final RegisterKeyMappingsEvent event) {
event.register(Keybinds.BOOST);
event.register(Keybinds.TRANSMIT);
}

@SubscribeEvent
Expand Down Expand Up @@ -292,6 +294,7 @@ public static class DeeperDarkerForgeClient {
@SubscribeEvent
public static void keyInput(final InputEvent.Key event) {
if(Keybinds.BOOST.consumeClick()) Messages.INSTANCE.sendToServer(new SoulElytraBoostPacket());
if(Keybinds.TRANSMIT.consumeClick()) Messages.INSTANCE.sendToServer(new UseTransmitterPacket());
}
}
}
Expand Up @@ -6,4 +6,5 @@

public class Keybinds {
public static final KeyMapping BOOST = new KeyMapping("key." + DeeperDarker.MOD_ID + ".boost", GLFW.GLFW_KEY_B, "key.categories." + DeeperDarker.MOD_ID);
public static final KeyMapping TRANSMIT = new KeyMapping("key." + DeeperDarker.MOD_ID + ".transmit", GLFW.GLFW_KEY_V, "key.categories." + DeeperDarker.MOD_ID);
}
Expand Up @@ -56,8 +56,8 @@ public InteractionResultHolder<ItemStack> use(Level pLevel, Player pPlayer, Inte
return super.use(pLevel, pPlayer, pUsedHand);
}

private InteractionResult transmit(Level level, Player player, ItemStack transmitter, BlockPos clickedPos) {
int[] pos = player.getMainHandItem().getTag().getIntArray("blockPos");
public static InteractionResult transmit(Level level, Player player, ItemStack transmitter, BlockPos clickedPos) {
int[] pos = transmitter.getTag().getIntArray("blockPos");
BlockPos linkedPos = new BlockPos(pos[0], pos[1], pos[2]);

if(!level.isLoaded(linkedPos)) {
Expand Down Expand Up @@ -95,7 +95,15 @@ private InteractionResult transmit(Level level, Player player, ItemStack transmi
return InteractionResult.SUCCESS;
}

private void formConnection(Level level, ItemStack stack, BlockPos pos) {
public static boolean isLinked(ItemStack stack) {
return stack.hasTag() && stack.getTag().contains("blockPos");
}

private static boolean canConnect(Level level, BlockPos target) {
return level.getBlockState(target).is(DDTags.Blocks.TRANSMITTABLE);
}

private static void formConnection(Level level, ItemStack stack, BlockPos pos) {
CompoundTag tag = stack.getOrCreateTag();
if(pos == null) {
stack.removeTagKey("blockPos");
Expand All @@ -106,15 +114,7 @@ private void formConnection(Level level, ItemStack stack, BlockPos pos) {
tag.putIntArray("blockPos", List.of(pos.getX(), pos.getY(), pos.getZ()));
}

private boolean isLinked(ItemStack stack) {
return stack.hasTag() && stack.getTag().contains("blockPos");
}

private boolean canConnect(Level level, BlockPos target) {
return level.getBlockState(target).is(DDTags.Blocks.TRANSMITTABLE);
}

private void actionBarMessage(Player player, String key, RegistryObject<SoundEvent> sound) {
private static void actionBarMessage(Player player, String key, RegistryObject<SoundEvent> sound) {
player.displayClientMessage(Component.translatable("block." + DeeperDarker.MOD_ID + "." + key), true);
player.playSound(sound.get());
}
Expand Down
Expand Up @@ -73,6 +73,7 @@ protected void addTranslations() {

add("key.categories." + DeeperDarker.MOD_ID, "Deeper and Darker");
add("key." + DeeperDarker.MOD_ID + ".boost", "Boost Soul Elytra");
add("key." + DeeperDarker.MOD_ID + ".transmit", "Use Sculk Transmitter");

add("biome." + DeeperDarker.MOD_ID + "." + OthersideBiomes.DEEPLANDS.location().getPath(), convertToName(OthersideBiomes.DEEPLANDS.location().getPath()));
add("biome." + DeeperDarker.MOD_ID + "." + OthersideBiomes.ECHOING_FOREST.location().getPath(), convertToName(OthersideBiomes.ECHOING_FOREST.location().getPath()));
Expand Down
Expand Up @@ -3,18 +3,25 @@
import com.kyanite.deeperdarker.content.DDItems;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.*;
import net.minecraft.world.item.ItemStack;
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;

@Mixin(value = { AbstractFurnaceMenu.class, BeaconMenu.class, BrewingStandMenu.class, CartographyTableMenu.class, ChestMenu.class, CraftingMenu.class, DispenserMenu.class, EnchantmentMenu.class, GrindstoneMenu.class, HopperMenu.class, ItemCombinerMenu.class, LoomMenu.class, ShulkerBoxMenu.class, StonecutterMenu.class })
public class ContainerMenuMixin {
@Inject(method = "stillValid", at = @At("HEAD"), cancellable = true)
@Inject(method = "stillValid", at = @At("RETURN"), cancellable = true)
public void stillValid(Player player, CallbackInfoReturnable<Boolean> cir) {
if(player.getMainHandItem().is(DDItems.SCULK_TRANSMITTER.get())) {
cir.cancel();
cir.setReturnValue(true);
if(cir.getReturnValue()) return;
if(player.getMainHandItem().is(DDItems.SCULK_TRANSMITTER.get())) cir.setReturnValue(true);
else {
for(ItemStack stack : player.getInventory().items) {
if(stack.is(DDItems.SCULK_TRANSMITTER.get())) {
cir.setReturnValue(true);
break;
}
}
}
}
}
Expand Up @@ -16,5 +16,6 @@ public static void registerMessages(String channel) {
INSTANCE = NetworkRegistry.newSimpleChannel(new ResourceLocation(DeeperDarker.MOD_ID, channel), () -> "1.0", s -> true, s -> true);
INSTANCE.registerMessage(nextID(), SoulElytraBoostPacket.class, SoulElytraBoostPacket::toBytes, SoulElytraBoostPacket::new, SoulElytraBoostPacket::handle);
INSTANCE.registerMessage(nextID(), SoulElytraClientPacket.class, SoulElytraClientPacket::toBytes, SoulElytraClientPacket::new, SoulElytraClientPacket::handle);
INSTANCE.registerMessage(nextID(), UseTransmitterPacket.class, UseTransmitterPacket::toBytes, UseTransmitterPacket::new, UseTransmitterPacket::handle);
}
}
Expand Up @@ -13,10 +13,10 @@
import java.util.function.Supplier;

public class SoulElytraBoostPacket {
public SoulElytraBoostPacket(ByteBuf buf) {
public SoulElytraBoostPacket() {
}

public SoulElytraBoostPacket() {
public SoulElytraBoostPacket(ByteBuf buf) {
}

public void toBytes(ByteBuf buf) {
Expand All @@ -25,7 +25,7 @@ public void toBytes(ByteBuf buf) {
public void handle(Supplier<NetworkEvent.Context> context) {
context.get().enqueueWork(() -> {
ServerPlayer player = context.get().getSender();
Level level = context.get().getSender().level();
Level level = player.level();
if(player.isFallFlying() && player.getInventory().armor.get(2).is(DDItems.SOUL_ELYTRA.get()) && !player.getCooldowns().isOnCooldown(DDItems.SOUL_ELYTRA.get())) {
FireworkRocketEntity rocket = new FireworkRocketEntity(level, new ItemStack(Items.FIREWORK_ROCKET), player);
level.addFreshEntity(rocket);
Expand Down
Expand Up @@ -10,10 +10,10 @@
import java.util.function.Supplier;

public class SoulElytraClientPacket {
public SoulElytraClientPacket(ByteBuf buf) {
public SoulElytraClientPacket() {
}

public SoulElytraClientPacket() {
public SoulElytraClientPacket(ByteBuf buf) {
}

public void toBytes(ByteBuf buf) {
Expand Down
@@ -0,0 +1,35 @@
package com.kyanite.deeperdarker.network;

import com.kyanite.deeperdarker.content.DDItems;
import com.kyanite.deeperdarker.content.items.SculkTransmitterItem;
import io.netty.buffer.ByteBuf;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.item.ItemStack;
import net.minecraftforge.network.NetworkEvent;

import java.util.function.Supplier;

public class UseTransmitterPacket {
public UseTransmitterPacket() {
}

public UseTransmitterPacket(ByteBuf buf) {
}

public void toBytes(ByteBuf buf) {
}

public void handle(Supplier<NetworkEvent.Context> context) {
context.get().enqueueWork(() -> {
ServerPlayer player = context.get().getSender();
for(ItemStack stack : player.getInventory().items) {
if(stack.is(DDItems.SCULK_TRANSMITTER.get()) && SculkTransmitterItem.isLinked(stack)) {
SculkTransmitterItem.transmit(player.level(), player, stack, null);
break;
}
}
});

context.get().setPacketHandled(true);
}
}

0 comments on commit 24cecd3

Please sign in to comment.