Revise the vault menu
Adds a keybind to open the vaults Fixes flight being disabled by the server on a relog Adds a flight enchantment to boots and leggings (Tier 1 max) DB Profile has additional column for flight as a boolean. Network packet added for client to server to request the vault to open. Added translation entries to en_us.json
This commit is contained in:
parent
da5d53fb88
commit
91fdf78a57
21 changed files with 396 additions and 38 deletions
|
@ -3,7 +3,7 @@
|
||||||
org.gradle.jvmargs=-Xmx8G
|
org.gradle.jvmargs=-Xmx8G
|
||||||
org.gradle.daemon=false
|
org.gradle.daemon=false
|
||||||
|
|
||||||
my_version=1.3.6.4
|
my_version=1.3.6.7
|
||||||
|
|
||||||
mc_version=1.19.2
|
mc_version=1.19.2
|
||||||
forge_version=43.2.3
|
forge_version=43.2.3
|
||||||
|
|
|
@ -111,6 +111,7 @@ key_key.hotbar.6:key.keyboard.6
|
||||||
key_key.hotbar.7:key.keyboard.7
|
key_key.hotbar.7:key.keyboard.7
|
||||||
key_key.hotbar.8:key.keyboard.8
|
key_key.hotbar.8:key.keyboard.8
|
||||||
key_key.hotbar.9:key.keyboard.9
|
key_key.hotbar.9:key.keyboard.9
|
||||||
|
key_key.otemod.open_vault:key.keyboard.v:ALT
|
||||||
soundCategory_master:1.0
|
soundCategory_master:1.0
|
||||||
soundCategory_music:0.08862526
|
soundCategory_music:0.08862526
|
||||||
soundCategory_record:1.0
|
soundCategory_record:1.0
|
||||||
|
|
|
@ -19,6 +19,8 @@ import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
|
import net.minecraftforge.client.event.InputEvent;
|
||||||
|
import net.minecraftforge.client.event.RegisterKeyMappingsEvent;
|
||||||
import net.minecraftforge.common.MinecraftForge;
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
import net.minecraftforge.common.world.BiomeModifier;
|
import net.minecraftforge.common.world.BiomeModifier;
|
||||||
import net.minecraftforge.eventbus.api.IEventBus;
|
import net.minecraftforge.eventbus.api.IEventBus;
|
||||||
|
@ -57,6 +59,7 @@ import dev.zontreck.otemod.implementation.vault.VaultScreen;
|
||||||
import dev.zontreck.otemod.implementation.vault.VaultWatcher;
|
import dev.zontreck.otemod.implementation.vault.VaultWatcher;
|
||||||
import dev.zontreck.otemod.items.ModItems;
|
import dev.zontreck.otemod.items.ModItems;
|
||||||
//import dev.zontreck.otemod.ore.Modifier.ModifierOfBiomes;
|
//import dev.zontreck.otemod.ore.Modifier.ModifierOfBiomes;
|
||||||
|
import dev.zontreck.otemod.networking.ModMessages;
|
||||||
|
|
||||||
// The value here should match an entry in the META-INF/mods.toml file
|
// The value here should match an entry in the META-INF/mods.toml file
|
||||||
@Mod(OTEMod.MOD_ID)
|
@Mod(OTEMod.MOD_ID)
|
||||||
|
@ -122,6 +125,7 @@ public class OTEMod
|
||||||
|
|
||||||
private void setup(final FMLCommonSetupEvent event)
|
private void setup(final FMLCommonSetupEvent event)
|
||||||
{
|
{
|
||||||
|
ModMessages.register();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -139,13 +143,6 @@ public class OTEMod
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void commonSetup(final FMLCommonSetupEvent event)
|
|
||||||
{
|
|
||||||
// Some common setup code
|
|
||||||
//LOGGER.info("HELLO FROM COMMON SETUP");
|
|
||||||
//LOGGER.info("DIRT BLOCK >> {}", ForgeRegistries.BLOCKS.getKey(Blocks.DIRT));
|
|
||||||
}
|
|
||||||
|
|
||||||
// You can use SubscribeEvent and let the Event Bus discover methods to call
|
// You can use SubscribeEvent and let the Event Bus discover methods to call
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void onServerStarting(ServerStartedEvent event)
|
public void onServerStarting(ServerStartedEvent event)
|
||||||
|
@ -243,10 +240,11 @@ public class OTEMod
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@OnlyIn(Dist.DEDICATED_SERVER)
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void onItemExpire(final ItemExpireEvent ev)
|
public void onItemExpire(final ItemExpireEvent ev)
|
||||||
{
|
{
|
||||||
|
if(ev.getEntity().level.isClientSide)return;
|
||||||
|
|
||||||
if(OTEServerConfig.ITEM_DESPAWN_TIMER.get()<=0)return;
|
if(OTEServerConfig.ITEM_DESPAWN_TIMER.get()<=0)return;
|
||||||
|
|
||||||
|
|
||||||
|
@ -266,7 +264,7 @@ public class OTEMod
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@OnlyIn(Dist.DEDICATED_SERVER)
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void onStop(final ServerStoppingEvent ev)
|
public void onStop(final ServerStoppingEvent ev)
|
||||||
{
|
{
|
||||||
|
@ -292,6 +290,7 @@ public class OTEMod
|
||||||
|
|
||||||
//ItemBlockRenderTypes.setRenderLayer(ModBlocks.AURORA_DOOR.get(), RenderType.translucent());
|
//ItemBlockRenderTypes.setRenderLayer(ModBlocks.AURORA_DOOR.get(), RenderType.translucent());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,11 +12,15 @@ import dev.zontreck.otemod.OTEMod;
|
||||||
import dev.zontreck.otemod.configs.OTEServerConfig;
|
import dev.zontreck.otemod.configs.OTEServerConfig;
|
||||||
import dev.zontreck.otemod.configs.PlayerFlyCache;
|
import dev.zontreck.otemod.configs.PlayerFlyCache;
|
||||||
import dev.zontreck.otemod.configs.Profile;
|
import dev.zontreck.otemod.configs.Profile;
|
||||||
|
import dev.zontreck.otemod.enchantments.ModEnchantments;
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
import net.minecraft.network.chat.Style;
|
import net.minecraft.network.chat.Style;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
|
import net.minecraft.world.entity.player.Abilities;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
import net.minecraftforge.event.ServerChatEvent;
|
import net.minecraftforge.event.ServerChatEvent;
|
||||||
|
@ -28,11 +32,12 @@ import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
|
||||||
@EventBusSubscriber(modid=OTEMod.MOD_ID, bus=Mod.EventBusSubscriber.Bus.FORGE)
|
@EventBusSubscriber(modid=OTEMod.MOD_ID, bus=Mod.EventBusSubscriber.Bus.FORGE)
|
||||||
public class ChatServerOverride {
|
public class ChatServerOverride {
|
||||||
|
|
||||||
@OnlyIn(Dist.DEDICATED_SERVER)
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void onJoin(final PlayerEvent.PlayerLoggedInEvent ev)
|
public void onJoin(final PlayerEvent.PlayerLoggedInEvent ev)
|
||||||
{
|
{
|
||||||
//Player joined, send custom alert
|
//Player joined, send custom alert
|
||||||
|
if(ev.getEntity().level.isClientSide)return;
|
||||||
|
ServerPlayer play = (ServerPlayer)ev.getEntity();
|
||||||
|
|
||||||
// Download user data from database
|
// Download user data from database
|
||||||
try{
|
try{
|
||||||
|
@ -48,18 +53,17 @@ public class ChatServerOverride {
|
||||||
has_profile=true;
|
has_profile=true;
|
||||||
|
|
||||||
|
|
||||||
OTEMod.PROFILES.put(ev.getEntity().getStringUUID(), new Profile(rs.getString("username"), rs.getString("prefix"), rs.getString("nickname"), rs.getString("name_color"), ev.getEntity().getStringUUID(), rs.getString("prefix_color"), rs.getString("chat_color")));
|
OTEMod.PROFILES.put(ev.getEntity().getStringUUID(), new Profile(rs.getString("username"), rs.getString("prefix"), rs.getString("nickname"), rs.getString("name_color"), ev.getEntity().getStringUUID(), rs.getString("prefix_color"), rs.getString("chat_color"), rs.getBoolean("flying")));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!has_profile)
|
if(!has_profile)
|
||||||
{
|
{
|
||||||
// Create profile!
|
// Create profile!
|
||||||
ServerPlayer play = (ServerPlayer)ev.getEntity();
|
|
||||||
Profile p = Profile.factory(play);
|
Profile p = Profile.factory(play);
|
||||||
OTEMod.PROFILES.put(play.getStringUUID(), p);
|
OTEMod.PROFILES.put(play.getStringUUID(), p);
|
||||||
p.commit(); // Commits the profile to the server
|
p.commit(); // Commits the profile to the server
|
||||||
|
|
||||||
ev.getEntity().displayClientMessage(Component.literal(ChatColor.BOLD+ ChatColor.DARK_GRAY + "["+ChatColor.DARK_GREEN + "OTEMOD" + ChatColor.DARK_GRAY + "] "+ChatColor.DARK_GREEN + "First join! Your server profile has been created"), false);
|
ev.getEntity().displayClientMessage(Component.literal(ChatColor.doColors( OTEMod.OTEPrefix +" !Dark_Green!First join! Your server profile has been created")), false);
|
||||||
}
|
}
|
||||||
}catch (SQLException e){
|
}catch (SQLException e){
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -70,17 +74,36 @@ public class ChatServerOverride {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!OTEServerConfig.USE_CUSTOM_JOINLEAVE.get()) return;
|
if(prof.flying)
|
||||||
|
{
|
||||||
ChatServerOverride.broadcast(Component.literal(ChatColor.DARK_GRAY + "[" + ChatColor.DARK_GREEN + "+" + ChatColor.DARK_GRAY + "] "+ ChatColor.BOLD + ChatColor.DARK_AQUA + prof.nickname), ev.getEntity().getServer());
|
play.getAbilities().flying=true;
|
||||||
|
play.onUpdateAbilities();
|
||||||
|
}
|
||||||
|
|
||||||
|
Abilities playerAbilities = play.getAbilities();
|
||||||
|
boolean mayFly = false;
|
||||||
|
ItemStack feet = play.getItemBySlot(EquipmentSlot.FEET);
|
||||||
|
ItemStack legs = play.getItemBySlot(EquipmentSlot.LEGS);
|
||||||
|
if(feet.getEnchantmentLevel(ModEnchantments.FLIGHT_ENCHANTMENT.get())>0)mayFly=true;
|
||||||
|
if(legs.getEnchantmentLevel(ModEnchantments.FLIGHT_ENCHANTMENT.get())>0)mayFly=true;
|
||||||
|
|
||||||
|
playerAbilities.mayfly=mayFly;
|
||||||
|
play.onUpdateAbilities();
|
||||||
|
|
||||||
|
if(!OTEServerConfig.USE_CUSTOM_JOINLEAVE.get()) return;
|
||||||
|
|
||||||
|
ChatServerOverride.broadcast(Component.literal(ChatColor.doColors("!Dark_Gray![!Dark_Green!+!Dark_Gray!] !Bold!!Dark_Aqua!"+prof.nickname)), ev.getEntity().getServer());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@OnlyIn(Dist.DEDICATED_SERVER)
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void onLeave(final PlayerEvent.PlayerLoggedOutEvent ev)
|
public void onLeave(final PlayerEvent.PlayerLoggedOutEvent ev)
|
||||||
{
|
{
|
||||||
|
if(ev.getEntity().level.isClientSide)return;
|
||||||
// Get player profile, send disconnect alert, then commit profile and remove it from memory
|
// Get player profile, send disconnect alert, then commit profile and remove it from memory
|
||||||
Profile px = Profile.get_profile_of(ev.getEntity().getStringUUID());
|
Profile px = Profile.get_profile_of(ev.getEntity().getStringUUID());
|
||||||
|
ServerPlayer sp = (ServerPlayer)ev.getEntity();
|
||||||
|
|
||||||
|
|
||||||
if(px==null)return;
|
if(px==null)return;
|
||||||
|
|
||||||
|
@ -89,14 +112,15 @@ public class ChatServerOverride {
|
||||||
// Send the alert
|
// Send the alert
|
||||||
ChatServerOverride.broadcast(Component.literal(ChatColor.DARK_GRAY + "[" + ChatColor.DARK_RED + "-" + ChatColor.DARK_GRAY + "] "+ChatColor.BOLD + ChatColor.DARK_AQUA + px.nickname), ev.getEntity().getServer());
|
ChatServerOverride.broadcast(Component.literal(ChatColor.DARK_GRAY + "[" + ChatColor.DARK_RED + "-" + ChatColor.DARK_GRAY + "] "+ChatColor.BOLD + ChatColor.DARK_AQUA + px.nickname), ev.getEntity().getServer());
|
||||||
|
|
||||||
|
px.flying=sp.getAbilities().flying;
|
||||||
px.commit();
|
px.commit();
|
||||||
OTEMod.PROFILES.remove(ev.getEntity().getStringUUID());
|
OTEMod.PROFILES.remove(ev.getEntity().getStringUUID());
|
||||||
}
|
}
|
||||||
|
|
||||||
@OnlyIn(Dist.DEDICATED_SERVER)
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void onClone(final PlayerEvent.Clone ev)
|
public void onClone(final PlayerEvent.Clone ev)
|
||||||
{
|
{
|
||||||
|
if(ev.getEntity().level.isClientSide)return;
|
||||||
// Fix for fly ability not copying to new instance on death or other circumstances
|
// Fix for fly ability not copying to new instance on death or other circumstances
|
||||||
Player old = ev.getOriginal();
|
Player old = ev.getOriginal();
|
||||||
Player n = ev.getEntity();
|
Player n = ev.getEntity();
|
||||||
|
@ -105,9 +129,9 @@ public class ChatServerOverride {
|
||||||
c.Assert((ServerPlayer)n);
|
c.Assert((ServerPlayer)n);
|
||||||
}
|
}
|
||||||
|
|
||||||
@OnlyIn(Dist.DEDICATED_SERVER)
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void onChat(final ServerChatEvent ev){
|
public void onChat(final ServerChatEvent ev){
|
||||||
|
if(ev.getPlayer().level.isClientSide)return;
|
||||||
// Player has chatted, apply override
|
// Player has chatted, apply override
|
||||||
if(!OTEServerConfig.USE_CUSTOM_CHATREPLACER.get()) return;
|
if(!OTEServerConfig.USE_CUSTOM_CHATREPLACER.get()) return;
|
||||||
|
|
||||||
|
|
|
@ -103,7 +103,7 @@ public class CommandRegistry {
|
||||||
HomeCommand.register(ev.getDispatcher());
|
HomeCommand.register(ev.getDispatcher());
|
||||||
DelHomeCommand.register(ev.getDispatcher());
|
DelHomeCommand.register(ev.getDispatcher());
|
||||||
|
|
||||||
FlyCommand.register(ev.getDispatcher());
|
//FlyCommand.register(ev.getDispatcher());
|
||||||
|
|
||||||
ChatColorCommand.register(ev.getDispatcher());
|
ChatColorCommand.register(ev.getDispatcher());
|
||||||
NameColorCommand.register(ev.getDispatcher());
|
NameColorCommand.register(ev.getDispatcher());
|
||||||
|
|
|
@ -3,11 +3,16 @@ package dev.zontreck.otemod.commands.vaults;
|
||||||
import com.mojang.brigadier.CommandDispatcher;
|
import com.mojang.brigadier.CommandDispatcher;
|
||||||
import com.mojang.brigadier.arguments.IntegerArgumentType;
|
import com.mojang.brigadier.arguments.IntegerArgumentType;
|
||||||
|
|
||||||
|
import dev.zontreck.libzontreck.chat.ChatColor;
|
||||||
|
import dev.zontreck.otemod.OTEMod;
|
||||||
|
import dev.zontreck.otemod.chat.ChatServerOverride;
|
||||||
import dev.zontreck.otemod.implementation.vault.VaultContainer;
|
import dev.zontreck.otemod.implementation.vault.VaultContainer;
|
||||||
import net.minecraft.commands.CommandSourceStack;
|
import net.minecraft.commands.CommandSourceStack;
|
||||||
import net.minecraft.commands.Commands;
|
import net.minecraft.commands.Commands;
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
import net.minecraft.world.SimpleMenuProvider;
|
import net.minecraft.world.SimpleMenuProvider;
|
||||||
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraftforge.network.NetworkHooks;
|
import net.minecraftforge.network.NetworkHooks;
|
||||||
|
|
||||||
public class VaultCommand {
|
public class VaultCommand {
|
||||||
|
@ -26,15 +31,25 @@ public class VaultCommand {
|
||||||
private static int vault(CommandSourceStack source, int i) {
|
private static int vault(CommandSourceStack source, int i) {
|
||||||
//VaultContainer cont = new VaultContainer(i, source.getPlayer().getUUID());
|
//VaultContainer cont = new VaultContainer(i, source.getPlayer().getUUID());
|
||||||
//cont.startOpen(source.getPlayer());
|
//cont.startOpen(source.getPlayer());
|
||||||
|
if(i <0)
|
||||||
|
{
|
||||||
|
ChatServerOverride.broadcastTo(source.getPlayer().getUUID(), Component.literal(ChatColor.doColors(OTEMod.OTEPrefix+" !Dark_Red!You can only specify a vault number in the positive range")), source.getServer());
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
doOpen(source.getPlayer(), i);
|
||||||
|
|
||||||
VaultContainer container = new VaultContainer(source.getPlayer(), i);
|
|
||||||
|
|
||||||
NetworkHooks.openScreen(source.getPlayer(), new SimpleMenuProvider(container.serverMenu, Component.literal("Vault "+i)));
|
|
||||||
|
|
||||||
// Add to the master vault registry
|
|
||||||
if(VaultContainer.VAULT_REGISTRY.containsKey(source.getPlayer().getUUID()))VaultContainer.VAULT_REGISTRY.remove(source.getPlayer().getUUID());
|
|
||||||
VaultContainer.VAULT_REGISTRY.put(source.getPlayer().getUUID(), container);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void doOpen(ServerPlayer p, int i){
|
||||||
|
|
||||||
|
VaultContainer container = new VaultContainer(p, i);
|
||||||
|
|
||||||
|
NetworkHooks.openScreen(p, new SimpleMenuProvider(container.serverMenu, Component.literal("Vault "+i)));
|
||||||
|
|
||||||
|
// Add to the master vault registry
|
||||||
|
if(VaultContainer.VAULT_REGISTRY.containsKey(p.getUUID()))VaultContainer.VAULT_REGISTRY.remove(p.getUUID());
|
||||||
|
VaultContainer.VAULT_REGISTRY.put(p.getUUID(), container);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,8 +16,9 @@ public class Profile {
|
||||||
public String name_color; // ChatColor.X
|
public String name_color; // ChatColor.X
|
||||||
public String prefix_color;
|
public String prefix_color;
|
||||||
public String chat_color;
|
public String chat_color;
|
||||||
|
public Boolean flying;
|
||||||
|
|
||||||
public Profile(String username, String prefix, String nickname, String name_color, String ID, String prefix_color, String chat_color) {
|
public Profile(String username, String prefix, String nickname, String name_color, String ID, String prefix_color, String chat_color, Boolean isFlying) {
|
||||||
this.username = username;
|
this.username = username;
|
||||||
this.prefix = prefix;
|
this.prefix = prefix;
|
||||||
this.nickname = nickname;
|
this.nickname = nickname;
|
||||||
|
@ -25,6 +26,7 @@ public class Profile {
|
||||||
this.user_id = ID;
|
this.user_id = ID;
|
||||||
this.prefix_color = prefix_color;
|
this.prefix_color = prefix_color;
|
||||||
this.chat_color = chat_color;
|
this.chat_color = chat_color;
|
||||||
|
this.flying=isFlying;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -41,7 +43,7 @@ public class Profile {
|
||||||
|
|
||||||
public static Profile factory(ServerPlayer play)
|
public static Profile factory(ServerPlayer play)
|
||||||
{
|
{
|
||||||
Profile p = new Profile(play.getName().getString(), "Member", play.getDisplayName().getString(), ChatColor.GREEN, play.getStringUUID(), ChatColor.AQUA, ChatColor.WHITE);
|
Profile p = new Profile(play.getName().getString(), "Member", play.getDisplayName().getString(), ChatColor.GREEN, play.getStringUUID(), ChatColor.AQUA, ChatColor.WHITE, false);
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,7 +51,7 @@ public class Profile {
|
||||||
{
|
{
|
||||||
// Send player to server!
|
// Send player to server!
|
||||||
Connection con = OTEMod.DB.getConnection();
|
Connection con = OTEMod.DB.getConnection();
|
||||||
String SQL = "REPLACE INTO `profiles` (username, uuid, prefix, nickname, name_color, prefix_color, chat_color) values (?, ?, ?, ?, ?, ?, ?);";
|
String SQL = "REPLACE INTO `profiles` (username, uuid, prefix, nickname, name_color, prefix_color, chat_color, flying) values (?, ?, ?, ?, ?, ?, ?, ?);";
|
||||||
try {
|
try {
|
||||||
PreparedStatement pstat = con.prepareStatement(SQL);
|
PreparedStatement pstat = con.prepareStatement(SQL);
|
||||||
pstat.setString(1, username);
|
pstat.setString(1, username);
|
||||||
|
@ -59,6 +61,7 @@ public class Profile {
|
||||||
pstat.setString(5, name_color);
|
pstat.setString(5, name_color);
|
||||||
pstat.setString(6, prefix_color);
|
pstat.setString(6, prefix_color);
|
||||||
pstat.setString(7, chat_color);
|
pstat.setString(7, chat_color);
|
||||||
|
pstat.setBoolean(8, flying);
|
||||||
|
|
||||||
pstat.execute();
|
pstat.execute();
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
|
|
|
@ -0,0 +1,99 @@
|
||||||
|
package dev.zontreck.otemod.enchantments;
|
||||||
|
|
||||||
|
import dev.zontreck.otemod.OTEMod;
|
||||||
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
|
import net.minecraft.world.entity.player.Abilities;
|
||||||
|
import net.minecraft.world.entity.player.Player;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.item.enchantment.Enchantment;
|
||||||
|
import net.minecraft.world.item.enchantment.EnchantmentCategory;
|
||||||
|
import net.minecraftforge.event.entity.living.LivingEquipmentChangeEvent;
|
||||||
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
|
import net.minecraftforge.fml.common.Mod;
|
||||||
|
|
||||||
|
public class FlightEnchantment extends Enchantment
|
||||||
|
{
|
||||||
|
@Mod.EventBusSubscriber(modid = OTEMod.MOD_ID, bus=Mod.EventBusSubscriber.Bus.FORGE)
|
||||||
|
public static class EventHandler{
|
||||||
|
@SubscribeEvent
|
||||||
|
public static void onLivingUpdate(LivingEquipmentChangeEvent ev)
|
||||||
|
{
|
||||||
|
if(ev.getEntity() instanceof Player)
|
||||||
|
{
|
||||||
|
if(ev.getEntity().level.isClientSide)return;
|
||||||
|
|
||||||
|
ServerPlayer sp = (ServerPlayer)ev.getEntity();
|
||||||
|
ItemStack feet = sp.getItemBySlot(EquipmentSlot.FEET);
|
||||||
|
ItemStack legs = sp.getItemBySlot(EquipmentSlot.LEGS);
|
||||||
|
|
||||||
|
boolean hasFlight = false;
|
||||||
|
|
||||||
|
if(feet.getEnchantmentLevel(ModEnchantments.FLIGHT_ENCHANTMENT.get())>0)hasFlight=true;
|
||||||
|
if(legs.getEnchantmentLevel(ModEnchantments.FLIGHT_ENCHANTMENT.get())>0)hasFlight=true;
|
||||||
|
|
||||||
|
Abilities playerAbilities = sp.getAbilities();
|
||||||
|
if(playerAbilities.mayfly == false)
|
||||||
|
{
|
||||||
|
if(hasFlight){
|
||||||
|
playerAbilities.mayfly=true;
|
||||||
|
sp.onUpdateAbilities();
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
if(!hasFlight){
|
||||||
|
|
||||||
|
playerAbilities.mayfly=false;
|
||||||
|
playerAbilities.flying=false;
|
||||||
|
|
||||||
|
sp.onUpdateAbilities();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public FlightEnchantment()
|
||||||
|
{
|
||||||
|
super(Rarity.RARE, EnchantmentCategory.ARMOR, new EquipmentSlot[] {EquipmentSlot.FEET, EquipmentSlot.LEGS});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMaxLevel()
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMinCost(int level)
|
||||||
|
{
|
||||||
|
return 28 + (level - 1) * 15;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMaxCost(int level)
|
||||||
|
{
|
||||||
|
return this.getMinCost(level) + 15;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public boolean canApplyAtEnchantingTable(ItemStack stack)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public boolean isTreasureOnly(){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public boolean isTradeable()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Not a bug. Flight is meant to be a permanent upgrade to a item. It is considered a curse due to unstable behavior that can randomly happen if the enchantment level is now maxxed out.
|
||||||
|
@Override
|
||||||
|
public boolean isCurse()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -17,7 +17,7 @@ public class MobEggEnchantment extends Enchantment
|
||||||
@Override
|
@Override
|
||||||
public int getMaxLevel()
|
public int getMaxLevel()
|
||||||
{
|
{
|
||||||
return 4;
|
return 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -39,4 +39,20 @@ public class MobEggEnchantment extends Enchantment
|
||||||
return super.canApplyAtEnchantingTable(stack);
|
return super.canApplyAtEnchantingTable(stack);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isTreasureOnly(){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public boolean isTradeable()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isDiscoverable()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,8 @@ public class ModEnchantments {
|
||||||
|
|
||||||
public static final RegistryObject<Enchantment> MOB_EGGING_ENCHANTMENT = REGISTERS.register("mob_egging", ()->new MobEggEnchantment());
|
public static final RegistryObject<Enchantment> MOB_EGGING_ENCHANTMENT = REGISTERS.register("mob_egging", ()->new MobEggEnchantment());
|
||||||
|
|
||||||
|
public static final RegistryObject<Enchantment> FLIGHT_ENCHANTMENT = REGISTERS.register("player_flight", ()->new FlightEnchantment());
|
||||||
|
|
||||||
public static void register(IEventBus bus){
|
public static void register(IEventBus bus){
|
||||||
REGISTERS.register(bus);
|
REGISTERS.register(bus);
|
||||||
}
|
}
|
||||||
|
|
39
src/main/java/dev/zontreck/otemod/events/ClientEvents.java
Normal file
39
src/main/java/dev/zontreck/otemod/events/ClientEvents.java
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
package dev.zontreck.otemod.events;
|
||||||
|
|
||||||
|
import dev.zontreck.otemod.OTEMod;
|
||||||
|
import dev.zontreck.otemod.integrations.KeyBindings;
|
||||||
|
import dev.zontreck.otemod.networking.ModMessages;
|
||||||
|
import dev.zontreck.otemod.networking.packets.OpenVaultPacket;
|
||||||
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
|
import net.minecraftforge.client.event.InputEvent;
|
||||||
|
import net.minecraftforge.client.event.RegisterKeyMappingsEvent;
|
||||||
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
|
import net.minecraftforge.fml.common.Mod;
|
||||||
|
|
||||||
|
public class ClientEvents {
|
||||||
|
@Mod.EventBusSubscriber(modid = OTEMod.MOD_ID, value = Dist.CLIENT)
|
||||||
|
public static class ForgeEvents
|
||||||
|
{
|
||||||
|
|
||||||
|
@SubscribeEvent
|
||||||
|
public static void onKeyInput(InputEvent.Key event)
|
||||||
|
{
|
||||||
|
//OTEMod.LOGGER.info("KEY PRESS: "+event.getKey());
|
||||||
|
if(KeyBindings.OPEN_VAULT.consumeClick())
|
||||||
|
{
|
||||||
|
ModMessages.sendToServer(new OpenVaultPacket(0, false, 0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Mod.EventBusSubscriber(modid = OTEMod.MOD_ID, value=Dist.CLIENT, bus=Mod.EventBusSubscriber.Bus.MOD)
|
||||||
|
public static class ClientModBus
|
||||||
|
{
|
||||||
|
|
||||||
|
@SubscribeEvent
|
||||||
|
public static void onKeyRegister(RegisterKeyMappingsEvent event)
|
||||||
|
{
|
||||||
|
event.register(KeyBindings.OPEN_VAULT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -31,15 +31,15 @@ public class VaultContainer
|
||||||
public MenuConstructor serverMenu;
|
public MenuConstructor serverMenu;
|
||||||
public UUID owner;
|
public UUID owner;
|
||||||
private MinecraftServer server;
|
private MinecraftServer server;
|
||||||
private final int VAULT_NUMBER;
|
public final int VAULT_NUMBER;
|
||||||
public final UUID VaultID;
|
public final UUID VaultID;
|
||||||
public VaultContainer(ServerPlayer player, int vaultNum) {
|
public VaultContainer(ServerPlayer player, int vaultNum) {
|
||||||
myInventory = new ItemStackHandler(54); // Vaults have a fixed size at the same as a double chest
|
myInventory = new ItemStackHandler(54); // Vaults have a fixed size at the same as a double chest
|
||||||
theContainer = new VaultMenu(player.containerCounter+1, player.getInventory(), myInventory, BlockPos.ZERO);
|
theContainer = new VaultMenu(player.containerCounter+1, player.getInventory(), myInventory, BlockPos.ZERO, player, vaultNum);
|
||||||
VaultID = theContainer.VaultMenuID;
|
VaultID = theContainer.VaultMenuID;
|
||||||
owner = player.getUUID();
|
owner = player.getUUID();
|
||||||
server=player.server;
|
server=player.server;
|
||||||
serverMenu = theContainer.getServerMenu(myInventory);
|
serverMenu = theContainer.getServerMenu(myInventory, vaultNum);
|
||||||
VAULT_NUMBER=vaultNum;
|
VAULT_NUMBER=vaultNum;
|
||||||
if(VAULT_NUMBER == -1)return; // Trash ID
|
if(VAULT_NUMBER == -1)return; // Trash ID
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.world.entity.player.Inventory;
|
import net.minecraft.world.entity.player.Inventory;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.inventory.AbstractContainerMenu;
|
import net.minecraft.world.inventory.AbstractContainerMenu;
|
||||||
|
import net.minecraft.world.inventory.ClickType;
|
||||||
import net.minecraft.world.inventory.MenuConstructor;
|
import net.minecraft.world.inventory.MenuConstructor;
|
||||||
import net.minecraft.world.inventory.Slot;
|
import net.minecraft.world.inventory.Slot;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
@ -19,16 +20,20 @@ public class VaultMenu extends AbstractContainerMenu
|
||||||
{
|
{
|
||||||
//private final ContainerLevelAccess containerAccess;
|
//private final ContainerLevelAccess containerAccess;
|
||||||
public final UUID VaultMenuID;
|
public final UUID VaultMenuID;
|
||||||
|
public final Player thePlayer;
|
||||||
|
public final int VAULT_NUMBER;
|
||||||
|
|
||||||
public VaultMenu (int id, Inventory player)
|
public VaultMenu (int id, Inventory player)
|
||||||
{
|
{
|
||||||
this(id, player, new ItemStackHandler(54), BlockPos.ZERO);
|
this(id, player, new ItemStackHandler(54), BlockPos.ZERO, player.player, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public VaultMenu (int id, Inventory player, IItemHandler slots, BlockPos pos)
|
public VaultMenu (int id, Inventory player, IItemHandler slots, BlockPos pos, Player play, int vaultNum)
|
||||||
{
|
{
|
||||||
super(ModMenuTypes.VAULT.get(), id);
|
super(ModMenuTypes.VAULT.get(), id);
|
||||||
|
thePlayer=play;
|
||||||
VaultMenuID=UUID.randomUUID();
|
VaultMenuID=UUID.randomUUID();
|
||||||
|
VAULT_NUMBER=vaultNum;
|
||||||
//this.containerAccess = ContainerLevelAccess.create(player.player.level, pos);
|
//this.containerAccess = ContainerLevelAccess.create(player.player.level, pos);
|
||||||
|
|
||||||
final int slotSize = 18;
|
final int slotSize = 18;
|
||||||
|
@ -104,8 +109,8 @@ public class VaultMenu extends AbstractContainerMenu
|
||||||
return true; // We have no block
|
return true; // We have no block
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MenuConstructor getServerMenu (ItemStackHandler inventory){
|
public static MenuConstructor getServerMenu (ItemStackHandler inventory, int vaultNum){
|
||||||
return (id, player, play) -> new VaultMenu(id, player, inventory, BlockPos.ZERO);
|
return (id, player, play) -> new VaultMenu(id, player, inventory, BlockPos.ZERO, player.player, vaultNum);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -6,25 +6,39 @@ import com.mojang.blaze3d.systems.RenderSystem;
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
|
|
||||||
import dev.zontreck.otemod.OTEMod;
|
import dev.zontreck.otemod.OTEMod;
|
||||||
|
import dev.zontreck.otemod.commands.vaults.VaultCommand;
|
||||||
|
import dev.zontreck.otemod.networking.ModMessages;
|
||||||
|
import dev.zontreck.otemod.networking.packets.OpenVaultPacket;
|
||||||
|
import net.minecraft.client.gui.components.Button;
|
||||||
|
import net.minecraft.client.gui.components.Button.OnPress;
|
||||||
|
import net.minecraft.client.gui.font.TextFieldHelper;
|
||||||
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
|
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
|
||||||
import net.minecraft.client.renderer.GameRenderer;
|
import net.minecraft.client.renderer.GameRenderer;
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
import net.minecraft.world.entity.player.Inventory;
|
import net.minecraft.world.entity.player.Inventory;
|
||||||
|
import net.minecraft.world.entity.player.Player;
|
||||||
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
|
import net.minecraftforge.network.NetworkHooks;
|
||||||
|
|
||||||
public class VaultScreen extends AbstractContainerScreen <VaultMenu>
|
public class VaultScreen extends AbstractContainerScreen <VaultMenu>
|
||||||
{
|
{
|
||||||
// 176x224
|
// 176x224
|
||||||
public final UUID VaultMenuID;
|
public final UUID VaultMenuID;
|
||||||
|
public final Player thePlayer;
|
||||||
|
public final VaultMenu THE_CONTAINER;
|
||||||
|
|
||||||
private static final ResourceLocation TEXTURE = new ResourceLocation(OTEMod.MOD_ID, "textures/gui/vault.png");
|
private static final ResourceLocation TEXTURE = new ResourceLocation(OTEMod.MOD_ID, "textures/gui/vault.png");
|
||||||
|
|
||||||
public VaultScreen(VaultMenu container, Inventory playerInv, Component comp){
|
public VaultScreen(VaultMenu container, Inventory playerInv, Component comp){
|
||||||
super(container, playerInv, comp);
|
super(container, playerInv, comp);
|
||||||
|
thePlayer=playerInv.player;
|
||||||
|
|
||||||
this.VaultMenuID = container.VaultMenuID;
|
this.VaultMenuID = container.VaultMenuID;
|
||||||
this.leftPos = 0;
|
this.leftPos = 0;
|
||||||
this.topPos = 0;
|
this.topPos = 0;
|
||||||
|
this.THE_CONTAINER=container;
|
||||||
|
|
||||||
this.imageWidth = 207;
|
this.imageWidth = 207;
|
||||||
this.imageHeight = 238;
|
this.imageHeight = 238;
|
||||||
|
@ -54,6 +68,17 @@ public class VaultScreen extends AbstractContainerScreen <VaultMenu>
|
||||||
{
|
{
|
||||||
super.init();
|
super.init();
|
||||||
// This is where custom controls would be added!
|
// This is where custom controls would be added!
|
||||||
|
|
||||||
|
this.addWidget(new Button(this.leftPos+7,this.topPos+84,16,16,Component.literal(""), (button)->{
|
||||||
|
thePlayer.closeContainer();
|
||||||
|
|
||||||
|
ModMessages.sendToServer(new OpenVaultPacket(0,true,-1));
|
||||||
|
} ));
|
||||||
|
|
||||||
|
this.addWidget(new Button(this.leftPos+187,this.topPos+84,16,16,Component.literal(""), (button)->{
|
||||||
|
thePlayer.closeContainer();
|
||||||
|
ModMessages.sendToServer(new OpenVaultPacket(0, true, 1));
|
||||||
|
} ));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
package dev.zontreck.otemod.integrations;
|
||||||
|
|
||||||
|
import org.lwjgl.glfw.GLFW;
|
||||||
|
|
||||||
|
import com.mojang.blaze3d.platform.InputConstants;
|
||||||
|
|
||||||
|
import net.minecraft.client.KeyMapping;
|
||||||
|
import net.minecraftforge.client.settings.KeyConflictContext;
|
||||||
|
|
||||||
|
public class KeyBindings {
|
||||||
|
public static final String KEY_CATEGORY_OTEMOD = "key.category.otemod";
|
||||||
|
public static final String KEY_OPEN_VAULT = "key.otemod.open_vault";
|
||||||
|
|
||||||
|
public static final KeyMapping OPEN_VAULT = new KeyMapping(KEY_OPEN_VAULT, KeyConflictContext.IN_GAME, InputConstants.Type.KEYSYM, GLFW.GLFW_KEY_V, KEY_CATEGORY_OTEMOD);
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
package dev.zontreck.otemod.networking;
|
||||||
|
|
||||||
|
import dev.zontreck.otemod.OTEMod;
|
||||||
|
import dev.zontreck.otemod.networking.packets.OpenVaultPacket;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
|
import net.minecraftforge.network.NetworkDirection;
|
||||||
|
import net.minecraftforge.network.NetworkRegistry;
|
||||||
|
import net.minecraftforge.network.PacketDistributor;
|
||||||
|
import net.minecraftforge.network.simple.SimpleChannel;
|
||||||
|
|
||||||
|
public class ModMessages {
|
||||||
|
private static SimpleChannel INSTANCE;
|
||||||
|
|
||||||
|
private static int PACKET_ID = 0;
|
||||||
|
private static int id()
|
||||||
|
{
|
||||||
|
return PACKET_ID++;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void register()
|
||||||
|
{
|
||||||
|
SimpleChannel net = NetworkRegistry.ChannelBuilder.named(new ResourceLocation(OTEMod.MOD_ID, "messages"))
|
||||||
|
.networkProtocolVersion(()-> "1.0")
|
||||||
|
.clientAcceptedVersions(s->true)
|
||||||
|
.serverAcceptedVersions(s->true)
|
||||||
|
.simpleChannel();
|
||||||
|
|
||||||
|
INSTANCE=net;
|
||||||
|
|
||||||
|
net.messageBuilder(OpenVaultPacket.class, id(), NetworkDirection.PLAY_TO_SERVER)
|
||||||
|
.decoder(OpenVaultPacket::new)
|
||||||
|
.encoder(OpenVaultPacket::toBytes)
|
||||||
|
.consumerMainThread(OpenVaultPacket::handle)
|
||||||
|
.add();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <MSG> void sendToServer(MSG message){
|
||||||
|
INSTANCE.sendToServer(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <MSG> void sendToPlayer(MSG message, ServerPlayer player)
|
||||||
|
{
|
||||||
|
INSTANCE.send(PacketDistributor.PLAYER.with(()->player), message);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,62 @@
|
||||||
|
package dev.zontreck.otemod.networking.packets;
|
||||||
|
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
import dev.zontreck.otemod.commands.vaults.VaultCommand;
|
||||||
|
import dev.zontreck.otemod.implementation.vault.VaultContainer;
|
||||||
|
import net.minecraft.network.FriendlyByteBuf;
|
||||||
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
|
import net.minecraftforge.event.level.NoteBlockEvent.Change;
|
||||||
|
import net.minecraftforge.network.NetworkEvent;
|
||||||
|
|
||||||
|
// This packet is only ever sent from the client to the server when requesting to open vaults using the EaseOfUse Buttons
|
||||||
|
public class OpenVaultPacket {
|
||||||
|
private int vault=0;
|
||||||
|
private boolean change = false; // This is set to true when going previous or next.
|
||||||
|
private int changeDir = 0; // This is only in the packet when change is true. This is either a 1 or a -1.
|
||||||
|
public OpenVaultPacket(int vaultNum, boolean change, int changeDir)
|
||||||
|
{
|
||||||
|
this.vault = vaultNum;
|
||||||
|
this.change = change;
|
||||||
|
this.changeDir=changeDir;
|
||||||
|
}
|
||||||
|
|
||||||
|
public OpenVaultPacket(FriendlyByteBuf buf)
|
||||||
|
{
|
||||||
|
this.change = buf.readBoolean();
|
||||||
|
if(this.change)
|
||||||
|
this.changeDir=buf.readInt();
|
||||||
|
else
|
||||||
|
this.vault = buf.readInt();
|
||||||
|
}
|
||||||
|
public void toBytes(FriendlyByteBuf buf)
|
||||||
|
{
|
||||||
|
buf.writeBoolean(change);
|
||||||
|
if(change) buf.writeInt(changeDir);
|
||||||
|
else buf.writeInt(vault);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean handle(Supplier<NetworkEvent.Context> supplier)
|
||||||
|
{
|
||||||
|
NetworkEvent.Context ctx = supplier.get();
|
||||||
|
ctx.enqueueWork(()->{
|
||||||
|
// On server now
|
||||||
|
ServerPlayer player = ctx.getSender();
|
||||||
|
|
||||||
|
if(change){
|
||||||
|
if(VaultContainer.VAULT_REGISTRY.containsKey(player.getUUID())){
|
||||||
|
VaultContainer cont = VaultContainer.VAULT_REGISTRY.get(player.getUUID());
|
||||||
|
vault = cont.VAULT_NUMBER + changeDir;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(vault < 0)vault=0;
|
||||||
|
|
||||||
|
|
||||||
|
VaultCommand.doOpen(player, vault);
|
||||||
|
});
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -19,7 +19,7 @@ modId="otemod" #mandatory
|
||||||
# The version number of the mod - there's a few well known ${} variables useable here or just hardcode it
|
# The version number of the mod - there's a few well known ${} variables useable here or just hardcode it
|
||||||
# ${file.jarVersion} will substitute the value of the Implementation-Version as read from the mod's JAR file metadata
|
# ${file.jarVersion} will substitute the value of the Implementation-Version as read from the mod's JAR file metadata
|
||||||
# see the associated build.gradle script for how to populate this completely automatically during a build
|
# see the associated build.gradle script for how to populate this completely automatically during a build
|
||||||
version="1.3.6.4" #mandatory
|
version="1.3.6.7" #mandatory
|
||||||
# A display name for the mod
|
# A display name for the mod
|
||||||
displayName="OTEMod" #mandatory
|
displayName="OTEMod" #mandatory
|
||||||
# A URL to query for updates for this mod. See the JSON update specification https://mcforge.readthedocs.io/en/latest/gettingstarted/autoupdate/
|
# A URL to query for updates for this mod. See the JSON update specification https://mcforge.readthedocs.io/en/latest/gettingstarted/autoupdate/
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
{
|
{
|
||||||
|
"key.otemod.open_vault": "Opens Vault 0",
|
||||||
|
"key.category.otemod": "Only The Essentials",
|
||||||
|
|
||||||
|
|
||||||
"itemGroup.refinedfabric.materials": "RefinedFabric Materials",
|
"itemGroup.refinedfabric.materials": "RefinedFabric Materials",
|
||||||
"itemGroup.refinedfabric.tools": "RefinedFabric Utilities",
|
"itemGroup.refinedfabric.tools": "RefinedFabric Utilities",
|
||||||
"itemGroup.refinedfabric.blocks": "RefinedFabric Blocks",
|
"itemGroup.refinedfabric.blocks": "RefinedFabric Blocks",
|
||||||
|
@ -33,6 +37,9 @@
|
||||||
"block.otemod.item_scrubber": "Item Scrubber",
|
"block.otemod.item_scrubber": "Item Scrubber",
|
||||||
|
|
||||||
"enchantment.otemod.mob_egging": "Mob Egging",
|
"enchantment.otemod.mob_egging": "Mob Egging",
|
||||||
|
"enchantment.otemod.player_flight": "Flight",
|
||||||
|
"enchantment.otemod.mob_egging.desc": "Chance of mob spawn eggs to drop",
|
||||||
|
"enchantment.otemod.player_flight.desc": "Allows you to fly!",
|
||||||
|
|
||||||
"dev.zontreck.otemod.msgs.only_player": "§cOnly players are allowed to execute this command",
|
"dev.zontreck.otemod.msgs.only_player": "§cOnly players are allowed to execute this command",
|
||||||
|
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 64 KiB |
Binary file not shown.
Reference in a new issue