Giter Club home page Giter Club logo

crossplatforms's Introduction

CrossplatForms

Build Status Version License Discord bStats Spigot Page

CrossplatForms is a Java Edition plugin aimed at creating Bedrock Edition Forms for Geyser players through flexible configurations. Bedrock Forms allow servers to provide players with abritrary choices in a styled menu, which the server then handles in any way desired. This allows you to customize forms specifically for your server, plugins, etc.

Inventory menus for Java Edition players can also be created, on all platforms. Protocolize must be installed on BungeeCord/Velocity for inventory menus to be created on them.

Geyser and Floodgate are not required, and if not present, Bedrock Edition features will be simply disabled.

See the gallery for visual examples.
See the wiki for configuration information.

Features:

  • Define Actions to run commands, open interfaces, change servers, etc
  • Simple, Modal, and Custom Forms for Bedrock Edition players
    • Simple and Modal Forms: Trigger different Actions depending on the button pressed
    • Custom Forms: Actions are triggered, and the response of each component is available as a placeholder in actions
  • Inventory menus. Trigger different Actions depending on the button pressed
  • Access Items for players that trigger Actions when clicked in hand
  • Register custom commands that trigger Actions
  • Trigger Actions when existing commands are executed
  • Broad placeholder support

Supported Platforms:

For CrossplatForms on BungeeCord/Velocity: If you have both Geyser and Floodgate installed, you'll need to either:

A: Use Geyser-Standalone instead
B: Use our fork of Floodgate that allows using the Floodgate API on BungeeCord/Velocity while Geyser is also installed. Only install it on the proxy.

BungeeCord and Velocity do not support Access Items.


Alternative downloads are available here and development builds are available here.

Requirements:

  • Java 8 or higher
  • Geyser or Floodgate are required for Bedrock Edition specific features. Other features will still work without them.
    • If you want to install CForms on Spigot servers behind a BungeeCord/Velocity proxy, Floodgate must also be installed on the backend servers. Follow this guide closely. If you need setup help or Bedrock players are being treated as Java players, ask the Geyser Discord for help.

How to use Geyser instead of Floodgate:

Although using Floodgate should always be preferred, it is not required. If you want to use Geyser, Java 16 or higher is required. There may be additional steps depending on your platform:

Paper 1.16.5 and newer, Velocity:    No extra steps necessary
Spigot, BungeeCord, Waterfall:      Add -Djdk.util.jar.enableMultiRelease=force to your JVM startup flags.

crossplatforms's People

Contributors

arixar avatar dependabot[bot] avatar jens-co avatar kas-tle avatar konicai avatar yhdiamond avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

crossplatforms's Issues

Command to remove access items

What feature do you want to see added?

A command that removes specific or all access items from a player.

Are there any alternatives?

  • Allow the player to drop and/or get rid of the item using crossplatforms.item.<access item name>.drop
  • Set false crossplatforms.item.<access item name>.possess and wait for the player to interact with it.

Compass as an Access Item triggers World Edit's navigation tool

Describe the bug

Something about a navigation wand is triggered when right clicking with a compass access item

To Reproduce

Setup an access item with compass material and right click with it

Expected behaviour

AWE doesn't trigger

Screenshots / Videos

https://cdn.discordapp.com/attachments/929122730622726174/965739222919155812/screen-20220418-1703042.mp4

Server Version and Plugins

No response

Geyser Dump

No response

CrossplatForms Version

?

Additional Context

No response

Updating menus and access items

What feature do you want to see added?

Menu's/forms being refreshed every x ticks (so dynamic placeholders get updated for example)

image

Are there any alternatives?

No, only re-opening the menu/form

More inventory types/sizes

What feature do you want to see added?

  • default chest inventory (rows of length 9)
  • hopper (row of length 5)
  • dispenser (3x3)

Also, proper handling of invalid sizes is required, such as processing the sizes during config loading, and then falling back to a size that works

Are there any alternatives?

Currently only chest menus works with little to no size validation

Support for relational placeholders

What feature do you want to see added?

Support for PAPI's relational placeholder system in things like filled

  • Simple Forms
  • Dropdown Components
  • Inventory menus

Are there any alternatives?

Hope that whatever placeholder you're using supports a relational player argument within the placeholder

A command to open a menu for a player

What feature do you want to see added?

A command like /forms open [form name] [player name] that opens the form for specified player

Are there any alternatives?

You could make the menu open with a command, but what if you don't want it to be opened with a command :)

Convert configs from GeyserHub

What feature do you want to see added?

Automatically convert configs from GeyserHub or a command to convert the file.

If anyone is interested in attempting this you'll need to learn or know how to use Configurate's Transformations (see 1 and 2). And everything that GeyserHub and CrossplatForms has in common will have to be translated. Start with MenuConfig and FormConfig and traverse all the fields.

Are there any alternatives?

Convert it by hand.

Action or option to close inventory menu on click

What feature do you want to see added?

An action or an option in each inventory menu to close the menu whenever the player successfully clicks on a button.

Are there any alternatives?

Run a command that closes the menu

[Suggestion] CommandInterceptor feature

Good day.

So, what do I mean with CommandInterceptor? Basically, when a user on Bedrock runs a command the CrossplatForms plugin would do something else. For example if you have a GUI plugin for Java players that opens a GUI with the command /server, the CrosplatForms plugin would check if a Bedrock player executes the command, and if so it redirects the user to the Bedrock GUI instead. I hope that is understandable. If not, please feel free to ask me, and I will try my best to clear up any confusion. Thanks in advance for your reply.

Sincerely
Rob

LinkageError on Bungeecord/Velocity

Describe the bug

LinkageError occurs between Floodgate and this whenever a form tries to be sent

To Reproduce

Send any bedrock form

Expected behaviour

Form is set

Screenshots / Videos

No response

Server Version and Plugins

No response

Geyser Dump

No response

CrossplatForms Version

any

Additional Context

No response

Inventory items go invisible when clicked, while proxy inventory menu is open

Describe the bug

When an inventory menu is open from Velocity or BungeeCord, any items in the player's personal inventory will become invisible (client-side) if they are clicked on.

This will have to be fixed with a plugin message from the proxy, telling the backend server to refresh the player's inventory.

To Reproduce

  1. Open proxy inventory menu
  2. Click on item in personal inventory
  3. It disappears
  4. Drop the item from your hotbar or click where the item used to be with a different item and the client will realize it actually still exists

Expected behaviour

The client doesn't think its gone or the client is refreshed on its inventory contents after clicking

Screenshots / Videos

No response

Server Version and Plugins

Protocolize, etc

Geyser Dump

No response

CrossplatForms Version

1.2.0

Additional Context

No response

Migrate to Gradle version catalog

What feature do you want to see added?

Use Gradle's version catalog system to keep things consistent between different subprojects. This will require transferring from Dependabot to Renovate since the former doesn't support it (dependabot/dependabot-core#3121)

Are there any alternatives?

suffer

Use Cumulus Component Implementations

Providing our own component implementations for Custom Forms is iffy because Cumulus' serializers serialize the given implementation regardless of what it is, which poses issues if the fields in our components don't exactly match Cumulus' native implementations.

Our CustomComponent abstract class can have an abstract forCumulus method which provides a cumulus-native Component implementation created from our component instance, which is then fed to the CustomForm

Expressions/conditionals (Native syntax, JavaScript, Skript)

What feature do you want to see added?

different possibilities:

  • Allow actions to only be run if a specific condition is met
  • An unique action that delegates to one of two lists of actions depending on a condition
  • Allow actions to cancel/skip subsequent actions

Are there any alternatives?

Use the commands action to run a Skript command that deals with the different conditions

Parse placeholder action

What feature do you want to see added?

A placeholder that parse(s) placeholders and then does nothing.

Are there any alternatives?

commands

Version Checker

What feature do you want to see added?

Check for updates on startup either by comparing the local version to one of

  1. latest version on SpigotMC
  2. latest GitHub tag/release
  3. latest successful build number on Jenkins

1 and 2 will result in less frequent messages, but each being more important.
3 could also compare the file hash.

A good implementation might be doing version checking with SpigotMC/GitHub, and then checking the file hash with Jenkins. All version information is already present in dev.projectg.crossplatforms.Constants

Are there any alternatives?

check manually

Separate Bedrock forms into separate yaml files

What feature do you want to see added?

Similar to how plugins like DeluxeMenus and ShopGUI+ do it, have each form (or menu for Java players) be in a separate yaml file. Example directory: Files/plugins/CrossplatForms/bedrock-forms/spawn-menu.yml or Files/plugins/CrossplatForms/java-menus/warps.yml

Are there any alternatives?

As mentioned above, deluxemenus and shopgui have their menus separated, but those aren't designed for Bedrock edition

Lowering PermissionDefault only applies after restart

This only applies to changing the config while the server is running and using /forms reload. Any permissions that are re-registered with a lower DefaultPermission (e.g. TRUE -> FALSE), doesn't really take effect. The permission is not stripped from players, even if they rejoin the server. This is either an issue with bukkit or a "limitation".

Only tested with TRUE -> FALSE so far.

Player filler lists aren't displaying head icons

Describe the bug

The filler list that shows all of the players currently online as an input argument doesn't show player head icons next to names as intended. The form tries to load head icons but then fails and the buttons turn to full width buttons instead.

To Reproduce

1.Make any form that uses the player filler for an argument (/tpa for example or /pay )
2. Attempt to use the form and get to the list of players

Expected behaviour

Expecting that player heads show up next to their names.

Screenshots / Videos

player list

Server Version and Plugins

No response

Geyser Dump

https://dump.geysermc.org/mHGpHiHz50VC9JIfwc1jvBhxrxq99uP9

CrossplatForms Version

Version: 1.4.0 Branch:main Build:28 Commit:9b2ad7c

Additional Context

No response

Apply an item button to more than just one slot

What feature do you want to see added?

Like we write the glass pane,we write it form this:
2:
display-name: " "
material: GLASS_PANE
4:
display-name: " "
material: GLASS_PANE
5:
display-name: " "
material: GLASS_PANE

Into this:
[2,4,5]:
display-name: " "
material: GLASS_PANE

Are there any alternatives?

The Form can be changed like this too
item_name:
display-name: " "
spot:[2,4,5]
materialGLASS_PANE

Load surplus auxiliary config files

What feature do you want to see added?

An option to load more than one access-items.yml, bedrock-forms.yml, java-menus.yml

This will probably require special considerations for when configs are written - e.g. updating configs

Are there any alternatives?

suffer

Luckperms integration on proxies

What feature do you want to see added?

BungeeCord and Velocity don't have any sort of good native permission system to register permissions and defaults to. Hook into LuckPerms if present to do that stuff.

Are there any alternatives?

suffer

Support optional components and buttons

What feature do you want to see added?

Support for optional components in custom forms and optional buttons in simple forms

Are there any alternatives?

suffer

Add CustomModelData for access items and item buttons

What feature do you want to see added?

  • Custom model data for acces items.
  • Add a "Forms" folder and the capacity to make a file for each form insted of one file for all forms.

image

  • Conditional forms/buttons
    If PLAYER have X permission, show "A" button, if not, shows "B" button instead, and same with forms If PLAYER have X permission show "form1", if not, show "B" form instead.
    This will alow us to make one-time shops or show specific buttons/forms to different ranked players for example.

Are there any alternatives?

  • All of this i tried with "command pannels" plugin, but inventory menus are no practical for console players. (Xbox, PS, Switch..)

Improve proxy commands

any method:

  • allow specifying only for BE or JE

INTERCEPT & INTERCEPT_PASS:

  • allow intercepting based off the whole command rather than only the base of the command. Maybe even regex matching.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.