Compare commits
12 Commits
forge-1.18
...
1.18
Author | SHA1 | Date | |
---|---|---|---|
575b58a9b1 | |||
3f42bdf25d | |||
b5638bb783 | |||
79525000b1 | |||
feff4a13e3 | |||
8169a1a344 | |||
7e66d964c6 | |||
80bc4f4d9e | |||
c993cc2375 | |||
2b204e764b | |||
b128279fc5 | |||
6398beb202 |
1
.gitignore
vendored
1
.gitignore
vendored
@ -3,3 +3,4 @@
|
|||||||
/build/
|
/build/
|
||||||
/run/
|
/run/
|
||||||
/src/test/
|
/src/test/
|
||||||
|
/src/generated/resources/.cache/cache
|
||||||
|
@ -2,13 +2,13 @@ org.gradle.jvmargs=-Xmx3G
|
|||||||
org.gradle.daemon=false
|
org.gradle.daemon=false
|
||||||
|
|
||||||
group = dev.micle
|
group = dev.micle
|
||||||
archivesBaseName = TotemOfReviving-Forge
|
archivesBaseName = micles-totem-of-reviving-forge
|
||||||
modID = totemofreviving
|
modID = totemofreviving
|
||||||
name = Micle's Totem of Reviving
|
name = Micle's Totem of Reviving
|
||||||
author = Micle
|
author = Micle
|
||||||
|
|
||||||
buildVersion = 2.0.1
|
buildVersion = 2.0.2
|
||||||
mcVersion = 1.18.1
|
mcVersion = 1.18.2
|
||||||
forgeVersion = 39.0.44
|
forgeVersion = 40.1.84
|
||||||
|
|
||||||
jeiVersion = 9.+
|
jeiVersion = 9.+
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"type": "totemofreviving:totem_recipe",
|
"type": "totemofreviving:charge_recipe",
|
||||||
"pattern": [
|
"pattern": [
|
||||||
"IDI",
|
"IDI",
|
||||||
"PEP",
|
"PEP",
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
package dev.micle.totemofreviving;
|
package dev.micle.totemofreviving;
|
||||||
|
|
||||||
|
import dev.micle.totemofreviving.proxy.IProxy;
|
||||||
|
import dev.micle.totemofreviving.proxy.IProxy;
|
||||||
|
import dev.micle.totemofreviving.proxy.Proxy;
|
||||||
import dev.micle.totemofreviving.setup.ModItems;
|
import dev.micle.totemofreviving.setup.ModItems;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.world.item.CreativeModeTab;
|
import net.minecraft.world.item.CreativeModeTab;
|
||||||
@ -8,16 +11,12 @@ import net.minecraftforge.fml.DistExecutor;
|
|||||||
import net.minecraftforge.fml.ModContainer;
|
import net.minecraftforge.fml.ModContainer;
|
||||||
import net.minecraftforge.fml.ModList;
|
import net.minecraftforge.fml.ModList;
|
||||||
import net.minecraftforge.fml.common.Mod;
|
import net.minecraftforge.fml.common.Mod;
|
||||||
import org.apache.logging.log4j.LogManager;
|
|
||||||
import org.apache.logging.log4j.Logger;
|
|
||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
@Mod(TotemOfReviving.MOD_ID)
|
@Mod(TotemOfReviving.MOD_ID)
|
||||||
public final class TotemOfReviving {
|
public final class TotemOfReviving {
|
||||||
public static final String MOD_ID = "totemofreviving";
|
public static final String MOD_ID = "totemofreviving";
|
||||||
public static final String MOD_NAME = "Micle's Totem of Reviving";
|
|
||||||
public static final CreativeModeTab ITEM_GROUP = new CreativeModeTab(MOD_ID) {
|
public static final CreativeModeTab ITEM_GROUP = new CreativeModeTab(MOD_ID) {
|
||||||
@Override
|
@Override
|
||||||
public ItemStack makeIcon() {
|
public ItemStack makeIcon() {
|
||||||
@ -25,22 +24,22 @@ public final class TotemOfReviving {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
public static final String RESOURCE_PREFIX = MOD_ID + ':';
|
private static IProxy proxy;
|
||||||
|
|
||||||
public static final Random RANDOM = new Random();
|
|
||||||
public static final Logger LOGGER = LogManager.getLogger(MOD_NAME);
|
|
||||||
|
|
||||||
public static TotemOfReviving INSTANCE;
|
|
||||||
public static ISideProxy PROXY;
|
|
||||||
|
|
||||||
public TotemOfReviving() {
|
public TotemOfReviving() {
|
||||||
INSTANCE = this;
|
proxy = DistExecutor.safeRunForDist(
|
||||||
PROXY = DistExecutor.safeRunForDist(
|
() -> Proxy.Client::new,
|
||||||
() -> SideProxy.Client::new,
|
() -> Proxy.Server::new
|
||||||
() -> SideProxy.Server::new
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ResourceLocation createResourceLocation(String name) {
|
||||||
|
if (name.contains(":")) {
|
||||||
|
throw new IllegalArgumentException("Name contains namespace");
|
||||||
|
}
|
||||||
|
return new ResourceLocation(MOD_ID, name);
|
||||||
|
}
|
||||||
|
|
||||||
public static String getVersion() {
|
public static String getVersion() {
|
||||||
Optional<? extends ModContainer> optional = ModList.get().getModContainerById(MOD_ID);
|
Optional<? extends ModContainer> optional = ModList.get().getModContainerById(MOD_ID);
|
||||||
if (optional.isPresent()) {
|
if (optional.isPresent()) {
|
||||||
@ -49,10 +48,7 @@ public final class TotemOfReviving {
|
|||||||
return "0.0.0";
|
return "0.0.0";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ResourceLocation createResourceLocation(String name) {
|
public static IProxy getProxy() {
|
||||||
if (name.contains(":")) {
|
return proxy;
|
||||||
throw new IllegalArgumentException("name containes namespace");
|
|
||||||
}
|
|
||||||
return new ResourceLocation(MOD_ID, name);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -76,7 +76,7 @@ public class ModRecipeProvider extends RecipeProvider {
|
|||||||
.pattern("NIN")
|
.pattern("NIN")
|
||||||
.unlockedBy("has_item", has(ModItems.IRON_TOTEM.get()))
|
.unlockedBy("has_item", has(ModItems.IRON_TOTEM.get()))
|
||||||
.save(consumer);
|
.save(consumer);
|
||||||
ExtendedShapedRecipeBuilder.shaped(ModRecipes.TOTEM_RECIPE.get(), ModItems.DIAMOND_CHARGE.get())
|
ExtendedShapedRecipeBuilder.shaped(ModRecipes.CHARGE_RECIPE.get(), ModItems.DIAMOND_CHARGE.get())
|
||||||
.define('E', Items.EMERALD)
|
.define('E', Items.EMERALD)
|
||||||
.define('D', Items.DIAMOND)
|
.define('D', Items.DIAMOND)
|
||||||
.define('I', Items.IRON_INGOT)
|
.define('I', Items.IRON_INGOT)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package dev.micle.totemofreviving.item.charge;
|
package dev.micle.totemofreviving.item.charge;
|
||||||
|
|
||||||
import dev.micle.totemofreviving.TotemOfReviving;
|
import dev.micle.totemofreviving.TotemOfReviving;
|
||||||
import dev.micle.totemofreviving.config.Config;
|
import dev.micle.totemofreviving.setup.Config;
|
||||||
import net.minecraft.ChatFormatting;
|
import net.minecraft.ChatFormatting;
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
import net.minecraft.network.chat.TextComponent;
|
import net.minecraft.network.chat.TextComponent;
|
||||||
|
@ -28,6 +28,6 @@ public class ChargeRecipe extends ExtendedShapedRecipe {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack assemble(CraftingContainer inventory) {
|
public ItemStack assemble(CraftingContainer inventory) {
|
||||||
return getBaseRecipe().getResultItem();
|
return getBaseRecipe().getResultItem().copy();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ import net.minecraft.advancements.critereon.RecipeUnlockedTrigger;
|
|||||||
import net.minecraft.data.recipes.FinishedRecipe;
|
import net.minecraft.data.recipes.FinishedRecipe;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.tags.Tag;
|
import net.minecraft.tags.Tag;
|
||||||
|
import net.minecraft.tags.TagKey;
|
||||||
import net.minecraft.world.item.Item;
|
import net.minecraft.world.item.Item;
|
||||||
import net.minecraft.world.item.crafting.Ingredient;
|
import net.minecraft.world.item.crafting.Ingredient;
|
||||||
import net.minecraft.world.item.crafting.RecipeSerializer;
|
import net.minecraft.world.item.crafting.RecipeSerializer;
|
||||||
@ -45,7 +46,7 @@ public class ExtendedShapedRecipeBuilder {
|
|||||||
return new ExtendedShapedRecipeBuilder(serializer, result, count);
|
return new ExtendedShapedRecipeBuilder(serializer, result, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExtendedShapedRecipeBuilder define(Character symbol, Tag<Item> tagIn) {
|
public ExtendedShapedRecipeBuilder define(Character symbol, TagKey<Item> tagIn) {
|
||||||
return this.define(symbol, Ingredient.of(tagIn));
|
return this.define(symbol, Ingredient.of(tagIn));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,6 +28,6 @@ public class TotemRecipe extends ExtendedShapedRecipe {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack assemble(CraftingContainer inventory) {
|
public ItemStack assemble(CraftingContainer inventory) {
|
||||||
return getBaseRecipe().getResultItem();
|
return getBaseRecipe().getResultItem().copy();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package dev.micle.totemofreviving.item.totem;
|
package dev.micle.totemofreviving.item.totem;
|
||||||
|
|
||||||
import dev.micle.totemofreviving.config.Config;
|
import dev.micle.totemofreviving.setup.Config;
|
||||||
import dev.micle.totemofreviving.item.charge.DiamondChargeItem;
|
import dev.micle.totemofreviving.item.charge.DiamondChargeItem;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.item.Rarity;
|
import net.minecraft.world.item.Rarity;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package dev.micle.totemofreviving.item.totem;
|
package dev.micle.totemofreviving.item.totem;
|
||||||
|
|
||||||
import dev.micle.totemofreviving.config.Config;
|
import dev.micle.totemofreviving.setup.Config;
|
||||||
import dev.micle.totemofreviving.item.charge.IronChargeItem;
|
import dev.micle.totemofreviving.item.charge.IronChargeItem;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package dev.micle.totemofreviving.item.totem;
|
package dev.micle.totemofreviving.item.totem;
|
||||||
|
|
||||||
import dev.micle.totemofreviving.config.Config;
|
import dev.micle.totemofreviving.setup.Config;
|
||||||
import dev.micle.totemofreviving.item.charge.NetheriteChargeItem;
|
import dev.micle.totemofreviving.item.charge.NetheriteChargeItem;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.item.Rarity;
|
import net.minecraft.world.item.Rarity;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package dev.micle.totemofreviving.item.totem;
|
package dev.micle.totemofreviving.item.totem;
|
||||||
|
|
||||||
import dev.micle.totemofreviving.config.Config;
|
import dev.micle.totemofreviving.setup.Config;
|
||||||
import dev.micle.totemofreviving.item.charge.StrawChargeItem;
|
import dev.micle.totemofreviving.item.charge.StrawChargeItem;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.item.Rarity;
|
import net.minecraft.world.item.Rarity;
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
package dev.micle.totemofreviving.item.totem;
|
package dev.micle.totemofreviving.item.totem;
|
||||||
|
|
||||||
import dev.micle.totemofreviving.TotemOfReviving;
|
import dev.micle.totemofreviving.TotemOfReviving;
|
||||||
import dev.micle.totemofreviving.config.Config;
|
import dev.micle.totemofreviving.setup.Config;
|
||||||
import dev.micle.totemofreviving.network.ChangeTargetPacket;
|
import dev.micle.totemofreviving.network.client.ChangeTargetPacket;
|
||||||
import dev.micle.totemofreviving.network.ChargeTotemPacket;
|
import dev.micle.totemofreviving.network.client.ChargeTotemPacket;
|
||||||
import dev.micle.totemofreviving.network.Network;
|
import dev.micle.totemofreviving.network.NetworkManager;
|
||||||
import dev.micle.totemofreviving.network.ReviveTargetPacket;
|
import dev.micle.totemofreviving.network.client.ReviveTargetPacket;
|
||||||
import dev.micle.totemofreviving.setup.ModKeyMappings;
|
import dev.micle.totemofreviving.setup.ModKeyMappings;
|
||||||
import net.minecraft.ChatFormatting;
|
import net.minecraft.ChatFormatting;
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
@ -214,12 +214,12 @@ public abstract class TotemItem extends Item {
|
|||||||
ItemStack chargeItem = (hand.equals(InteractionHand.MAIN_HAND)) ? player.getOffhandItem() : player.getMainHandItem();
|
ItemStack chargeItem = (hand.equals(InteractionHand.MAIN_HAND)) ? player.getOffhandItem() : player.getMainHandItem();
|
||||||
|
|
||||||
if (player.isCrouching()) {
|
if (player.isCrouching()) {
|
||||||
Network.channel.sendToServer(new ChangeTargetPacket(hand));
|
NetworkManager.getChannel().sendToServer(new ChangeTargetPacket(hand));
|
||||||
} else {
|
} else {
|
||||||
if (isCharge(chargeItem)) {
|
if (isCharge(chargeItem)) {
|
||||||
Network.channel.sendToServer(new ChargeTotemPacket(hand));
|
NetworkManager.getChannel().sendToServer(new ChargeTotemPacket(hand));
|
||||||
} else {
|
} else {
|
||||||
Network.channel.sendToServer(new ReviveTargetPacket(hand));
|
NetworkManager.getChannel().sendToServer(new ReviveTargetPacket(hand));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return super.use(world, player, hand);
|
return super.use(world, player, hand);
|
||||||
|
@ -1,83 +0,0 @@
|
|||||||
package dev.micle.totemofreviving.network;
|
|
||||||
|
|
||||||
import dev.micle.totemofreviving.TotemOfReviving;
|
|
||||||
import dev.micle.totemofreviving.util.MismatchedVersionException;
|
|
||||||
import net.minecraft.network.FriendlyByteBuf;
|
|
||||||
import net.minecraftforge.network.NetworkRegistry;
|
|
||||||
import net.minecraftforge.network.simple.SimpleChannel;
|
|
||||||
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
public class Network {
|
|
||||||
public static final String VERSION = TotemOfReviving.MOD_ID + "-net-1";
|
|
||||||
private static final Pattern NET_VERSION_PATTERN = Pattern.compile(TotemOfReviving.MOD_ID + "-net-\\d+$");
|
|
||||||
private static final Pattern MOD_VERSION_PATTERN = Pattern.compile("Forge-\\d+\\.\\d+\\.\\d+-\\d+\\.\\d+\\.\\d+$");
|
|
||||||
|
|
||||||
public static SimpleChannel channel;
|
|
||||||
|
|
||||||
public static void init() {
|
|
||||||
channel = NetworkRegistry.ChannelBuilder.named(TotemOfReviving.createResourceLocation("network"))
|
|
||||||
.clientAcceptedVersions(s -> Objects.equals(s, VERSION))
|
|
||||||
.serverAcceptedVersions(s -> Objects.equals(s, VERSION))
|
|
||||||
.networkProtocolVersion(() -> VERSION)
|
|
||||||
.simpleChannel();
|
|
||||||
|
|
||||||
int id = 0;
|
|
||||||
channel.messageBuilder(ChangeTargetPacket.class, id++)
|
|
||||||
.encoder(ChangeTargetPacket::encode)
|
|
||||||
.decoder(ChangeTargetPacket::decode)
|
|
||||||
.consumer(ChangeTargetPacket::handle)
|
|
||||||
.add();
|
|
||||||
channel.messageBuilder(ChargeTotemPacket.class, id++)
|
|
||||||
.encoder(ChargeTotemPacket::encode)
|
|
||||||
.decoder(ChargeTotemPacket::decode)
|
|
||||||
.consumer(ChargeTotemPacket::handle)
|
|
||||||
.add();
|
|
||||||
channel.messageBuilder(ReviveTargetPacket.class, id++)
|
|
||||||
.encoder(ReviveTargetPacket::encode)
|
|
||||||
.decoder(ReviveTargetPacket::decode)
|
|
||||||
.consumer(ReviveTargetPacket::handle)
|
|
||||||
.add();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void writeVersionInfo(FriendlyByteBuf buffer, boolean senderIsServer) {
|
|
||||||
buffer.writeBoolean(senderIsServer);
|
|
||||||
buffer.writeUtf(VERSION);
|
|
||||||
buffer.writeUtf(TotemOfReviving.getVersion());
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void checkVersion(FriendlyByteBuf buffer) {
|
|
||||||
boolean senderIsServer = buffer.readBoolean();
|
|
||||||
String serverNetVersion = (senderIsServer) ? readNetVersion(buffer) : VERSION;
|
|
||||||
String serverModVersion = (senderIsServer) ? readModVersion(buffer) : TotemOfReviving.getVersion();
|
|
||||||
String clientNetVersion = (senderIsServer) ? VERSION : readNetVersion(buffer);
|
|
||||||
String clientModVersion = (senderIsServer) ? TotemOfReviving.getVersion() : readModVersion(buffer);
|
|
||||||
|
|
||||||
if (!serverNetVersion.equals(clientNetVersion)) {
|
|
||||||
throw new MismatchedVersionException(
|
|
||||||
String.format("The server and client are running different versions of [Micle's Totem of Reviving]. " +
|
|
||||||
"Try updating this mod on either the client and or the server. " +
|
|
||||||
"Client version is %s (%s). Server version is %s (%s)",
|
|
||||||
clientModVersion, clientNetVersion,
|
|
||||||
serverModVersion, serverNetVersion)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String readNetVersion(FriendlyByteBuf buffer) {
|
|
||||||
String netVersion = buffer.readUtf();
|
|
||||||
if (!NET_VERSION_PATTERN.matcher(netVersion).matches()) {
|
|
||||||
return "UNKNOWN (" + netVersion + ")";
|
|
||||||
}
|
|
||||||
return netVersion;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String readModVersion(FriendlyByteBuf buffer) {
|
|
||||||
String modVersion = buffer.readUtf();
|
|
||||||
if (!modVersion.equals("NONE") && !MOD_VERSION_PATTERN.matcher(modVersion).matches()) {
|
|
||||||
return "UNKNOWN (" + modVersion + ")";
|
|
||||||
}
|
|
||||||
return modVersion;
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,44 @@
|
|||||||
|
package dev.micle.totemofreviving.network;
|
||||||
|
|
||||||
|
import dev.micle.totemofreviving.TotemOfReviving;
|
||||||
|
import dev.micle.totemofreviving.network.client.ChangeTargetPacket;
|
||||||
|
import dev.micle.totemofreviving.network.client.ChargeTotemPacket;
|
||||||
|
import dev.micle.totemofreviving.network.client.ReviveTargetPacket;
|
||||||
|
import net.minecraftforge.network.NetworkRegistry;
|
||||||
|
import net.minecraftforge.network.simple.SimpleChannel;
|
||||||
|
|
||||||
|
public class NetworkManager {
|
||||||
|
// Initialize variables
|
||||||
|
private static SimpleChannel channel;
|
||||||
|
|
||||||
|
public static void init() {
|
||||||
|
// Create channel
|
||||||
|
channel = NetworkRegistry.ChannelBuilder.named(TotemOfReviving.createResourceLocation("network"))
|
||||||
|
.clientAcceptedVersions(v -> v.equals(TotemOfReviving.getVersion()))
|
||||||
|
.serverAcceptedVersions(v -> v.equals(TotemOfReviving.getVersion()))
|
||||||
|
.networkProtocolVersion(TotemOfReviving::getVersion)
|
||||||
|
.simpleChannel();
|
||||||
|
|
||||||
|
// Register packets
|
||||||
|
int id = 0;
|
||||||
|
channel.messageBuilder(ChangeTargetPacket.class, id++)
|
||||||
|
.encoder(ChangeTargetPacket::encode)
|
||||||
|
.decoder(ChangeTargetPacket::decode)
|
||||||
|
.consumer(ChangeTargetPacket::handle)
|
||||||
|
.add();
|
||||||
|
channel.messageBuilder(ChargeTotemPacket.class, id++)
|
||||||
|
.encoder(ChargeTotemPacket::encode)
|
||||||
|
.decoder(ChargeTotemPacket::decode)
|
||||||
|
.consumer(ChargeTotemPacket::handle)
|
||||||
|
.add();
|
||||||
|
channel.messageBuilder(ReviveTargetPacket.class, id++)
|
||||||
|
.encoder(ReviveTargetPacket::encode)
|
||||||
|
.decoder(ReviveTargetPacket::decode)
|
||||||
|
.consumer(ReviveTargetPacket::handle)
|
||||||
|
.add();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SimpleChannel getChannel() {
|
||||||
|
return channel;
|
||||||
|
}
|
||||||
|
}
|
@ -1,7 +1,8 @@
|
|||||||
package dev.micle.totemofreviving.network;
|
package dev.micle.totemofreviving.network.client;
|
||||||
|
|
||||||
import dev.micle.totemofreviving.TotemOfReviving;
|
import dev.micle.totemofreviving.TotemOfReviving;
|
||||||
import dev.micle.totemofreviving.item.totem.TotemItem;
|
import dev.micle.totemofreviving.item.totem.TotemItem;
|
||||||
|
import dev.micle.totemofreviving.network.NetworkManager;
|
||||||
import net.minecraft.ChatFormatting;
|
import net.minecraft.ChatFormatting;
|
||||||
import net.minecraft.network.FriendlyByteBuf;
|
import net.minecraft.network.FriendlyByteBuf;
|
||||||
import net.minecraft.network.chat.TextComponent;
|
import net.minecraft.network.chat.TextComponent;
|
||||||
@ -21,12 +22,10 @@ public class ChangeTargetPacket {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void encode(final ChangeTargetPacket packet, final FriendlyByteBuf buffer) {
|
public static void encode(final ChangeTargetPacket packet, final FriendlyByteBuf buffer) {
|
||||||
Network.writeVersionInfo(buffer, false);
|
|
||||||
buffer.writeEnum(packet.hand);
|
buffer.writeEnum(packet.hand);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ChangeTargetPacket decode(final FriendlyByteBuf buffer) {
|
public static ChangeTargetPacket decode(final FriendlyByteBuf buffer) {
|
||||||
Network.checkVersion(buffer);
|
|
||||||
return new ChangeTargetPacket(buffer.readEnum(InteractionHand.class));
|
return new ChangeTargetPacket(buffer.readEnum(InteractionHand.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -37,7 +36,7 @@ public class ChangeTargetPacket {
|
|||||||
if (sender == null) { return; }
|
if (sender == null) { return; }
|
||||||
|
|
||||||
ItemStack totemStack = sender.getItemInHand(packet.hand);
|
ItemStack totemStack = sender.getItemInHand(packet.hand);
|
||||||
PlayerList playerList = TotemOfReviving.PROXY.getServer().getPlayerList();
|
PlayerList playerList = TotemOfReviving.getProxy().getServer().getPlayerList();
|
||||||
int targetIndex = TotemItem.getTargetIndex(totemStack) + 1;
|
int targetIndex = TotemItem.getTargetIndex(totemStack) + 1;
|
||||||
|
|
||||||
if (targetIndex > playerList.getPlayerCount()-1) { targetIndex = 0; }
|
if (targetIndex > playerList.getPlayerCount()-1) { targetIndex = 0; }
|
@ -1,6 +1,7 @@
|
|||||||
package dev.micle.totemofreviving.network;
|
package dev.micle.totemofreviving.network.client;
|
||||||
|
|
||||||
import dev.micle.totemofreviving.item.totem.TotemItem;
|
import dev.micle.totemofreviving.item.totem.TotemItem;
|
||||||
|
import dev.micle.totemofreviving.network.NetworkManager;
|
||||||
import net.minecraft.network.FriendlyByteBuf;
|
import net.minecraft.network.FriendlyByteBuf;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
import net.minecraft.world.InteractionHand;
|
import net.minecraft.world.InteractionHand;
|
||||||
@ -17,12 +18,10 @@ public class ChargeTotemPacket {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void encode(final ChargeTotemPacket packet, final FriendlyByteBuf buffer) {
|
public static void encode(final ChargeTotemPacket packet, final FriendlyByteBuf buffer) {
|
||||||
Network.writeVersionInfo(buffer, false);
|
|
||||||
buffer.writeEnum(packet.hand);
|
buffer.writeEnum(packet.hand);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ChargeTotemPacket decode(final FriendlyByteBuf buffer) {
|
public static ChargeTotemPacket decode(final FriendlyByteBuf buffer) {
|
||||||
Network.checkVersion(buffer);
|
|
||||||
return new ChargeTotemPacket(buffer.readEnum(InteractionHand.class));
|
return new ChargeTotemPacket(buffer.readEnum(InteractionHand.class));
|
||||||
}
|
}
|
||||||
|
|
@ -1,7 +1,8 @@
|
|||||||
package dev.micle.totemofreviving.network;
|
package dev.micle.totemofreviving.network.client;
|
||||||
|
|
||||||
import dev.micle.totemofreviving.TotemOfReviving;
|
import dev.micle.totemofreviving.TotemOfReviving;
|
||||||
import dev.micle.totemofreviving.item.totem.TotemItem;
|
import dev.micle.totemofreviving.item.totem.TotemItem;
|
||||||
|
import dev.micle.totemofreviving.network.NetworkManager;
|
||||||
import net.minecraft.ChatFormatting;
|
import net.minecraft.ChatFormatting;
|
||||||
import net.minecraft.network.FriendlyByteBuf;
|
import net.minecraft.network.FriendlyByteBuf;
|
||||||
import net.minecraft.network.chat.TextComponent;
|
import net.minecraft.network.chat.TextComponent;
|
||||||
@ -20,12 +21,10 @@ public class ReviveTargetPacket {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void encode(final ReviveTargetPacket packet, final FriendlyByteBuf buffer) {
|
public static void encode(final ReviveTargetPacket packet, final FriendlyByteBuf buffer) {
|
||||||
Network.writeVersionInfo(buffer, false);
|
|
||||||
buffer.writeEnum(packet.hand);
|
buffer.writeEnum(packet.hand);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ReviveTargetPacket decode(final FriendlyByteBuf buffer) {
|
public static ReviveTargetPacket decode(final FriendlyByteBuf buffer) {
|
||||||
Network.checkVersion(buffer);
|
|
||||||
return new ReviveTargetPacket(buffer.readEnum(InteractionHand.class));
|
return new ReviveTargetPacket(buffer.readEnum(InteractionHand.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -39,7 +38,7 @@ public class ReviveTargetPacket {
|
|||||||
ServerPlayer target;
|
ServerPlayer target;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
target = TotemOfReviving.PROXY.getServer().getPlayerList().getPlayer(TotemItem.getTargetUUID(totemStack));
|
target = TotemOfReviving.getProxy().getServer().getPlayerList().getPlayer(TotemItem.getTargetUUID(totemStack));
|
||||||
if (target == null) { throw new NullPointerException("Target is null!"); }
|
if (target == null) { throw new NullPointerException("Target is null!"); }
|
||||||
} catch (NullPointerException exception) {
|
} catch (NullPointerException exception) {
|
||||||
sender.sendMessage(new TextComponent(ChatFormatting.WHITE + "Unable to find player!"), sender.getUUID());
|
sender.sendMessage(new TextComponent(ChatFormatting.WHITE + "Unable to find player!"), sender.getUUID());
|
@ -1,13 +1,11 @@
|
|||||||
package dev.micle.totemofreviving;
|
package dev.micle.totemofreviving.proxy;
|
||||||
|
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
|
|
||||||
public interface ISideProxy {
|
public interface IProxy {
|
||||||
MinecraftServer getServer();
|
MinecraftServer getServer();
|
||||||
|
|
||||||
Player getClientPlayer();
|
Player getClientPlayer();
|
||||||
|
|
||||||
Level getClientWorld();
|
Level getClientWorld();
|
||||||
}
|
}
|
@ -1,8 +1,8 @@
|
|||||||
package dev.micle.totemofreviving;
|
package dev.micle.totemofreviving.proxy;
|
||||||
|
|
||||||
import dev.micle.totemofreviving.config.Config;
|
import dev.micle.totemofreviving.setup.Config;
|
||||||
import dev.micle.totemofreviving.data.DataGenerators;
|
import dev.micle.totemofreviving.data.DataGenerators;
|
||||||
import dev.micle.totemofreviving.network.Network;
|
import dev.micle.totemofreviving.network.NetworkManager;
|
||||||
import dev.micle.totemofreviving.setup.Registration;
|
import dev.micle.totemofreviving.setup.Registration;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
@ -18,24 +18,28 @@ import net.minecraftforge.eventbus.api.IEventBus;
|
|||||||
import net.minecraftforge.fml.event.lifecycle.*;
|
import net.minecraftforge.fml.event.lifecycle.*;
|
||||||
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
||||||
|
|
||||||
class SideProxy implements ISideProxy {
|
public class Proxy implements IProxy {
|
||||||
|
// Initialize variables
|
||||||
private static MinecraftServer server = null;
|
private static MinecraftServer server = null;
|
||||||
|
|
||||||
// Common setup
|
// Common setup
|
||||||
SideProxy() {
|
public Proxy() {
|
||||||
|
// Initialize setup
|
||||||
Registration.register();
|
Registration.register();
|
||||||
Config.init();
|
Config.init();
|
||||||
Network.init();
|
NetworkManager.init();
|
||||||
|
|
||||||
|
// Register mod event bus listeners
|
||||||
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
|
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
|
||||||
modEventBus.addListener(DataGenerators::gatherData);
|
modEventBus.addListener(DataGenerators::gatherData);
|
||||||
modEventBus.addListener(SideProxy::setup);
|
modEventBus.addListener(Proxy::setup);
|
||||||
modEventBus.addListener(SideProxy::imcEnqueue);
|
modEventBus.addListener(Proxy::imcEnqueue);
|
||||||
modEventBus.addListener(SideProxy::imcProcess);
|
modEventBus.addListener(Proxy::imcProcess);
|
||||||
|
|
||||||
MinecraftForge.EVENT_BUS.addListener(SideProxy::onAddReloadListeners);
|
// Register event bus listeners
|
||||||
MinecraftForge.EVENT_BUS.addListener(SideProxy::serverStarted);
|
MinecraftForge.EVENT_BUS.addListener(Proxy::onAddReloadListeners);
|
||||||
MinecraftForge.EVENT_BUS.addListener(SideProxy::serverStopping);
|
MinecraftForge.EVENT_BUS.addListener(Proxy::serverStarted);
|
||||||
|
MinecraftForge.EVENT_BUS.addListener(Proxy::serverStopping);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void setup(FMLCommonSetupEvent event) {}
|
private static void setup(FMLCommonSetupEvent event) {}
|
||||||
@ -70,10 +74,12 @@ class SideProxy implements ISideProxy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Client setup
|
// Client setup
|
||||||
static class Client extends SideProxy {
|
public static class Client extends Proxy {
|
||||||
Client() {
|
public Client() {
|
||||||
FMLJavaModLoadingContext.get().getModEventBus().addListener(Client::setup);
|
// Register mod event bus listeners
|
||||||
FMLJavaModLoadingContext.get().getModEventBus().addListener(Client::postSetup);
|
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
|
||||||
|
modEventBus.addListener(Client::setup);
|
||||||
|
modEventBus.addListener(Client::postSetup);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void setup(FMLClientSetupEvent event) {}
|
private static void setup(FMLClientSetupEvent event) {}
|
||||||
@ -94,9 +100,11 @@ class SideProxy implements ISideProxy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Server setup
|
// Server setup
|
||||||
static class Server extends SideProxy {
|
public static class Server extends Proxy {
|
||||||
Server() {
|
public Server() {
|
||||||
FMLJavaModLoadingContext.get().getModEventBus().addListener(Server::setup);
|
// Register mod event bus listeners
|
||||||
|
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
|
||||||
|
modEventBus.addListener(Server::setup);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void setup(FMLDedicatedServerSetupEvent event) {}
|
private static void setup(FMLDedicatedServerSetupEvent event) {}
|
@ -1,4 +1,4 @@
|
|||||||
package dev.micle.totemofreviving.config;
|
package dev.micle.totemofreviving.setup;
|
||||||
|
|
||||||
import dev.micle.totemofreviving.item.totem.DiamondTotemItem;
|
import dev.micle.totemofreviving.item.totem.DiamondTotemItem;
|
||||||
import dev.micle.totemofreviving.item.totem.IronTotemItem;
|
import dev.micle.totemofreviving.item.totem.IronTotemItem;
|
@ -5,5 +5,5 @@ import net.minecraft.client.KeyMapping;
|
|||||||
|
|
||||||
public class ModKeyMappings {
|
public class ModKeyMappings {
|
||||||
public static final KeyMapping ADVANCED_TOOLTIP =
|
public static final KeyMapping ADVANCED_TOOLTIP =
|
||||||
new KeyMapping("advanced_tooltip", InputConstants.KEY_LSHIFT, KeyMapping.CATEGORY_INVENTORY);
|
new KeyMapping("advanced_tooltips", InputConstants.KEY_LSHIFT, KeyMapping.CATEGORY_INVENTORY);
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ import net.minecraftforge.registries.IForgeRegistry;
|
|||||||
import net.minecraftforge.registries.IForgeRegistryEntry;
|
import net.minecraftforge.registries.IForgeRegistryEntry;
|
||||||
|
|
||||||
public class Registration {
|
public class Registration {
|
||||||
|
// Initialize variables
|
||||||
public static final DeferredRegister<Item> ITEMS = create(ForgeRegistries.ITEMS);
|
public static final DeferredRegister<Item> ITEMS = create(ForgeRegistries.ITEMS);
|
||||||
public static final DeferredRegister<RecipeSerializer<?>> RECIPE_SERIALIZERS = create(ForgeRegistries.RECIPE_SERIALIZERS);
|
public static final DeferredRegister<RecipeSerializer<?>> RECIPE_SERIALIZERS = create(ForgeRegistries.RECIPE_SERIALIZERS);
|
||||||
|
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
package dev.micle.totemofreviving.util;
|
|
||||||
|
|
||||||
public class MismatchedVersionException extends RuntimeException {
|
|
||||||
public MismatchedVersionException(String msg) {
|
|
||||||
super(msg);
|
|
||||||
}
|
|
||||||
}
|
|
@ -6,7 +6,7 @@
|
|||||||
# The name of the mod loader type to load - for regular FML @Mod mods it should be javafml
|
# The name of the mod loader type to load - for regular FML @Mod mods it should be javafml
|
||||||
modLoader = "javafml" #mandatory
|
modLoader = "javafml" #mandatory
|
||||||
# A version range to match for said mod loader - for regular FML @Mod it will be the forge version
|
# A version range to match for said mod loader - for regular FML @Mod it will be the forge version
|
||||||
loaderVersion = "[39,)" #mandatory This is typically bumped every Minecraft version by Forge. See our download page for lists of versions.
|
loaderVersion = "[40,)" #mandatory This is typically bumped every Minecraft version by Forge. See our download page for lists of versions.
|
||||||
# The license for you mod. This is mandatory metadata and allows for easier comprehension of your redistributive properties.
|
# The license for you mod. This is mandatory metadata and allows for easier comprehension of your redistributive properties.
|
||||||
# Review your options at https://choosealicense.com/. All rights reserved is the default copyright stance, and is thus the default here.
|
# Review your options at https://choosealicense.com/. All rights reserved is the default copyright stance, and is thus the default here.
|
||||||
license = "All Rights Reserved"
|
license = "All Rights Reserved"
|
||||||
@ -27,7 +27,7 @@ displayName = "Micle's Totem of Reviving" #mandatory
|
|||||||
# A URL for the "homepage" for this mod, displayed in the mod UI
|
# A URL for the "homepage" for this mod, displayed in the mod UI
|
||||||
#displayURL="http://example.com/" #optional
|
#displayURL="http://example.com/" #optional
|
||||||
# A file name (in the root of the mod JAR) containing a logo for display
|
# A file name (in the root of the mod JAR) containing a logo for display
|
||||||
#logoFile="totemofreviving.png" #optional
|
logoFile="logo.jpg" #optional
|
||||||
# A text field displayed in the mod UI
|
# A text field displayed in the mod UI
|
||||||
#credits="Thanks for this example mod goes to Java" #optional
|
#credits="Thanks for this example mod goes to Java" #optional
|
||||||
# A text field displayed in the mod UI
|
# A text field displayed in the mod UI
|
||||||
@ -43,7 +43,7 @@ Mod for reviving players in a hardcore world.
|
|||||||
# Does this dependency have to exist - if not, ordering below must be specified
|
# Does this dependency have to exist - if not, ordering below must be specified
|
||||||
mandatory = true #mandatory
|
mandatory = true #mandatory
|
||||||
# The version range of the dependency
|
# The version range of the dependency
|
||||||
versionRange = "[39,)" #mandatory
|
versionRange = "[40,)" #mandatory
|
||||||
# An ordering relationship for the dependency - BEFORE or AFTER required if the relationship is not mandatory
|
# An ordering relationship for the dependency - BEFORE or AFTER required if the relationship is not mandatory
|
||||||
ordering = "NONE"
|
ordering = "NONE"
|
||||||
# Side this dependency is applied on - BOTH, CLIENT or SERVER
|
# Side this dependency is applied on - BOTH, CLIENT or SERVER
|
||||||
@ -53,6 +53,6 @@ Mod for reviving players in a hardcore world.
|
|||||||
modId = "minecraft"
|
modId = "minecraft"
|
||||||
mandatory = true
|
mandatory = true
|
||||||
# This version range declares a minimum of the current minecraft version up to but not including the next major version
|
# This version range declares a minimum of the current minecraft version up to but not including the next major version
|
||||||
versionRange = "[1.18.1,1.19)"
|
versionRange = "[1.18.2,1.19)"
|
||||||
ordering = "NONE"
|
ordering = "NONE"
|
||||||
side = "BOTH"
|
side = "BOTH"
|
||||||
|
@ -7,5 +7,6 @@
|
|||||||
"item.totemofreviving.straw_charge": "Straw reviving charge",
|
"item.totemofreviving.straw_charge": "Straw reviving charge",
|
||||||
"item.totemofreviving.iron_charge": "Iron reviving charge",
|
"item.totemofreviving.iron_charge": "Iron reviving charge",
|
||||||
"item.totemofreviving.diamond_charge": "Diamond reviving charge",
|
"item.totemofreviving.diamond_charge": "Diamond reviving charge",
|
||||||
"item.totemofreviving.netherite_charge": "Netherite reviving charge"
|
"item.totemofreviving.netherite_charge": "Netherite reviving charge",
|
||||||
|
"advanced_tooltips": "advanced_tooltips"
|
||||||
}
|
}
|
BIN
src/main/resources/logo.jpg
Normal file
BIN
src/main/resources/logo.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 98 KiB |
Reference in New Issue
Block a user