From 6a09eb859ce86f9173e17e203336717144fa51ed Mon Sep 17 00:00:00 2001 From: "benpospo@gmail.com" <93595333+taraxsmallboy@users.noreply.github.com> Date: Sun, 2 Jul 2023 12:27:36 +0200 Subject: [PATCH] Recipes --- .../java/techreborn/TechRebornClient.java | 3 +++ .../techreborn/config/TechRebornConfig.java | 5 +++- .../techreborn/items/armor/NanoSuitItem.java | 27 ++++++++++++++++--- .../packets/ServerboundPackets.java | 21 +++++++++++++++ .../java/techreborn/utils/JetpackUtils.java | 4 --- .../crafting_table/armor/nano_boots.json | 18 +++++++++++++ .../crafting_table/armor/nano_chestplate.json | 22 +++++++++++++++ .../crafting_table/armor/nano_helmet.json | 18 +++++++++++++ .../crafting_table/armor/nano_leggings.json | 22 +++++++++++++++ 9 files changed, 131 insertions(+), 9 deletions(-) delete mode 100644 src/main/java/techreborn/utils/JetpackUtils.java create mode 100644 src/main/resources/data/techreborn/recipes/crafting_table/armor/nano_boots.json create mode 100644 src/main/resources/data/techreborn/recipes/crafting_table/armor/nano_chestplate.json create mode 100644 src/main/resources/data/techreborn/recipes/crafting_table/armor/nano_helmet.json create mode 100644 src/main/resources/data/techreborn/recipes/crafting_table/armor/nano_leggings.json diff --git a/src/client/java/techreborn/TechRebornClient.java b/src/client/java/techreborn/TechRebornClient.java index ba6339ccc..330d20f80 100644 --- a/src/client/java/techreborn/TechRebornClient.java +++ b/src/client/java/techreborn/TechRebornClient.java @@ -57,6 +57,7 @@ import net.minecraft.util.Identifier; import org.jetbrains.annotations.Nullable; import org.lwjgl.glfw.GLFW; import reborncore.client.ClientJumpEvent; +import reborncore.client.ClientNetworkManager; import reborncore.client.gui.GuiBase; import reborncore.client.multiblock.MultiblockRenderer; import reborncore.common.powerSystem.RcEnergyItem; @@ -83,6 +84,7 @@ import techreborn.items.FrequencyTransmitterItem; import techreborn.items.armor.BatpackItem; import techreborn.items.tool.ChainsawItem; import techreborn.items.tool.industrial.NanosaberItem; +import techreborn.packets.ServerboundPackets; import java.util.Arrays; import java.util.Collection; @@ -114,6 +116,7 @@ public class TechRebornClient implements ClientModInitializer { ClientTickEvents.END_CLIENT_TICK.register(client -> { while (nanoSuitFlight.wasPressed()) { client.player.sendMessage(Text.literal("Key 1 was pressed!"), false); + ClientNetworkManager.sendToServer(ServerboundPackets.createPacketNanoSuitFlight()); } }); }); diff --git a/src/main/java/techreborn/config/TechRebornConfig.java b/src/main/java/techreborn/config/TechRebornConfig.java index 5d2936c0b..4fb1c2175 100644 --- a/src/main/java/techreborn/config/TechRebornConfig.java +++ b/src/main/java/techreborn/config/TechRebornConfig.java @@ -304,9 +304,12 @@ public class TechRebornConfig { @Config(config = "items", category = "power", key = "nanoSuitCapacity", comment = "Nano Suit Energy Capacity") public static long nanoSuitCapacity = 1_000_000; - @Config(config = "items", category = "power", key = "nanoSuitNightVisionCost", comment = "Nano Suit Breathing Cost") + @Config(config = "items", category = "power", key = "nanoSuitNightVisionCost", comment = "Nano Suit Night Vision Cost") public static long nanoSuitNightVisionCost = 2; + @Config(config = "items", category = "power", key = "nanoSuitFlightCost", comment = "Nano Suit Flight Cost") + public static long nanoSuitFlightCost = 2; + @Config(config = "items", category = "upgrades", key = "overclocker_speed", comment = "Overclocker behavior speed multiplier") public static double overclockerSpeed = 0.25; diff --git a/src/main/java/techreborn/items/armor/NanoSuitItem.java b/src/main/java/techreborn/items/armor/NanoSuitItem.java index afe21cb25..cfacaf6b0 100644 --- a/src/main/java/techreborn/items/armor/NanoSuitItem.java +++ b/src/main/java/techreborn/items/armor/NanoSuitItem.java @@ -28,7 +28,6 @@ import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.HashMultimap; import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.Multimap; -import com.mojang.authlib.minecraft.client.MinecraftClient; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.attribute.EntityAttribute; import net.minecraft.entity.attribute.EntityAttributeModifier; @@ -38,13 +37,15 @@ import net.minecraft.entity.effect.StatusEffects; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ArmorMaterial; import net.minecraft.item.ItemStack; +import net.minecraft.particle.ParticleTypes; +import net.minecraft.text.Text; import net.minecraft.world.World; import reborncore.api.items.ArmorBlockEntityTicker; -import reborncore.api.items.ArmorRemoveHandler; import reborncore.common.powerSystem.RcEnergyTier; import techreborn.config.TechRebornConfig; public class NanoSuitItem extends TREnergyArmourItem implements ArmorBlockEntityTicker { + public NanoSuitItem(ArmorMaterial material, Type slot) { super(material, slot, TechRebornConfig.nanoSuitCapacity, RcEnergyTier.HIGH); } @@ -84,9 +85,27 @@ public class NanoSuitItem extends TREnergyArmourItem implements ArmorBlockEntity playerEntity.removeStatusEffect(StatusEffects.NIGHT_VISION); } } - case CHEST, FEET, LEGS -> { - // Future functionality + case FEET -> { + if (tryUseEnergy(stack, TechRebornConfig.nanoSuitFlightCost)) { + playerEntity.setNoGravity(true); + playerEntity.updatePosition(playerEntity.getX(), playerEntity.getY() + 0.1, playerEntity.getZ()); + world.addParticle(ParticleTypes.SOUL_FIRE_FLAME, playerEntity.getX(), playerEntity.getY(), playerEntity.getZ(), 0.0, -1.0, 0.0); + } else { + playerEntity.setNoGravity(false); + playerEntity.sendMessage(Text.literal("uwu")); + } } } } + + public void boostPlayer(ItemStack stack, PlayerEntity playerEntity) { + World world = playerEntity.getWorld(); + if (tryUseEnergy(stack, TechRebornConfig.nanoSuitFlightCost)) { + playerEntity.setNoGravity(true); + playerEntity.updatePosition(playerEntity.getX(), playerEntity.getY() + 0.3, playerEntity.getZ()); + world.addParticle(ParticleTypes.SOUL_FIRE_FLAME, playerEntity.getX(), playerEntity.getY(), playerEntity.getZ(), 1.0, 1.0, 1.0); + } else { + playerEntity.setNoGravity(false); + } + } } diff --git a/src/main/java/techreborn/packets/ServerboundPackets.java b/src/main/java/techreborn/packets/ServerboundPackets.java index ae1efa058..4e63c9b6b 100644 --- a/src/main/java/techreborn/packets/ServerboundPackets.java +++ b/src/main/java/techreborn/packets/ServerboundPackets.java @@ -25,10 +25,13 @@ package techreborn.packets; import net.minecraft.block.entity.BlockEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ArmorItem; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; +import reborncore.api.items.ArmorBlockEntityTicker; import reborncore.common.network.IdentifiedPacket; import reborncore.common.network.NetworkManager; import techreborn.TechReborn; @@ -44,7 +47,9 @@ import techreborn.blockentity.machine.tier3.ChunkLoaderBlockEntity; import techreborn.blockentity.storage.energy.AdjustableSUBlockEntity; import techreborn.blockentity.storage.item.StorageUnitBaseBlockEntity; import techreborn.config.TechRebornConfig; +import techreborn.init.TRArmorMaterials; import techreborn.init.TRContent; +import techreborn.items.armor.NanoSuitItem; public class ServerboundPackets { @@ -61,6 +66,7 @@ public class ServerboundPackets { public static final Identifier JUMP = new Identifier(TechReborn.MOD_ID, "jump"); public static final Identifier PUMP_DEPTH = new Identifier(TechReborn.MOD_ID, "pump_depth"); public static final Identifier PUMP_RANGE = new Identifier(TechReborn.MOD_ID, "pump_range"); + public static final Identifier NANO_SUIT_FLIGHT = new Identifier(TechReborn.MOD_ID, "nano_suit_flight"); public static void init() { NetworkManager.registerServerBoundHandler(AESU, (server, player, handler, buf, responseSender) -> { @@ -226,6 +232,17 @@ public class ServerboundPackets { }); })); + NetworkManager.registerServerBoundHandler(NANO_SUIT_FLIGHT, ((server, player, handler, buf, responseSender) -> { + NanoSuitItem nanoSuitItem = new NanoSuitItem(TRArmorMaterials.NANO, ArmorItem.Type.BOOTS); + server.execute(() -> { + for (ItemStack stack : player.getArmorItems()) { + if (!stack.isEmpty() && stack.getItem().equals(TRContent.NANO_BOOTS)) { + nanoSuitItem.boostPlayer(stack, player); + } + } + }); + })); + } public static IdentifiedPacket createPacketAesu(int buttonID, boolean shift, boolean ctrl, AdjustableSUBlockEntity blockEntity) { @@ -317,4 +334,8 @@ public class ServerboundPackets { buf.writeInt(buttonAmount); }); } + + public static IdentifiedPacket createPacketNanoSuitFlight() { + return NetworkManager.createServerBoundPacket(NANO_SUIT_FLIGHT, buf -> {}); + } } diff --git a/src/main/java/techreborn/utils/JetpackUtils.java b/src/main/java/techreborn/utils/JetpackUtils.java deleted file mode 100644 index ef5b52b60..000000000 --- a/src/main/java/techreborn/utils/JetpackUtils.java +++ /dev/null @@ -1,4 +0,0 @@ -package techreborn.utils; - -public class JetpackUtils { -} diff --git a/src/main/resources/data/techreborn/recipes/crafting_table/armor/nano_boots.json b/src/main/resources/data/techreborn/recipes/crafting_table/armor/nano_boots.json new file mode 100644 index 000000000..354fedd91 --- /dev/null +++ b/src/main/resources/data/techreborn/recipes/crafting_table/armor/nano_boots.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "E E", + "C C" + ], + "key": { + "C": { + "item": "techreborn:carbon_plate" + }, + "E": { + "item": "techreborn:energy_crystal" + } + }, + "result": { + "item": "techreborn:nano_boots" + } +} \ No newline at end of file diff --git a/src/main/resources/data/techreborn/recipes/crafting_table/armor/nano_chestplate.json b/src/main/resources/data/techreborn/recipes/crafting_table/armor/nano_chestplate.json new file mode 100644 index 000000000..68439f16b --- /dev/null +++ b/src/main/resources/data/techreborn/recipes/crafting_table/armor/nano_chestplate.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "C C", + "CEC", + "CAC" + ], + "key": { + "C": { + "item": "techreborn:carbon_plate" + }, + "A": { + "item": "techreborn:advanced_circuit" + }, + "E": { + "item": "techreborn:energy_crystal" + } + }, + "result": { + "item": "techreborn:nano_leggings" + } +} \ No newline at end of file diff --git a/src/main/resources/data/techreborn/recipes/crafting_table/armor/nano_helmet.json b/src/main/resources/data/techreborn/recipes/crafting_table/armor/nano_helmet.json new file mode 100644 index 000000000..f28c75bcb --- /dev/null +++ b/src/main/resources/data/techreborn/recipes/crafting_table/armor/nano_helmet.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "CEC", + "C C" + ], + "key": { + "C": { + "item": "techreborn:carbon_plate" + }, + "E": { + "item": "techreborn:energy_crystal" + } + }, + "result": { + "item": "techreborn:nano_helmet" + } +} \ No newline at end of file diff --git a/src/main/resources/data/techreborn/recipes/crafting_table/armor/nano_leggings.json b/src/main/resources/data/techreborn/recipes/crafting_table/armor/nano_leggings.json new file mode 100644 index 000000000..820252bed --- /dev/null +++ b/src/main/resources/data/techreborn/recipes/crafting_table/armor/nano_leggings.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "CAC", + "E E", + "C C" + ], + "key": { + "C": { + "item": "techreborn:carbon_plate" + }, + "A": { + "item": "techreborn:advanced_circuit" + }, + "E": { + "item": "techreborn:energy_crystal" + } + }, + "result": { + "item": "techreborn:nano_leggings" + } +} \ No newline at end of file