mirror of
https://github.com/xSquishyLiam/mc-GeyserModelEngine-plugin.git
synced 2025-12-19 14:59:19 +00:00
Merge pull request #53 from xSquishyLiam/main
Updated PE to 2.9.5 & added bstats & fixed build.yml
This commit is contained in:
7
build.yml → .github/workflows/build.yml
vendored
7
build.yml → .github/workflows/build.yml
vendored
@@ -11,7 +11,7 @@ jobs:
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Setup JDK
|
||||
- name: Setup Java JDK
|
||||
@@ -21,8 +21,11 @@ jobs:
|
||||
distribution: 'zulu'
|
||||
|
||||
# Build
|
||||
- name: Make gradlew executable
|
||||
run: chmod +x gradlew
|
||||
|
||||
- name: Build with Gradle
|
||||
run: gradle build
|
||||
run: ./gradlew build
|
||||
|
||||
- name: Auto release
|
||||
uses: "marvinpinto/action-automatic-releases@latest"
|
||||
9
.idea/workspace.xml
generated
9
.idea/workspace.xml
generated
@@ -4,7 +4,10 @@
|
||||
<option name="autoReloadType" value="SELECTIVE" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="ff2e9770-ec88-4715-adeb-b9dbda130e1a" name="Changes" comment="" />
|
||||
<list default="true" id="ff2e9770-ec88-4715-adeb-b9dbda130e1a" name="Changes" comment="">
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/GeyserModelEngine.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/GeyserModelEngine.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/resources/config.yml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/config.yml" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
@@ -57,6 +60,7 @@
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="GradleScriptDefinitionsStorage" workingDir="$PROJECT_DIR$" gradleHome="$USER_HOME$/.gradle/wrapper/dists/gradle-8.12-bin/cetblhg4pflnnks72fxwobvgv/gradle-8.12" javaHome="$USER_HOME$/.jdks/openjdk-21.0.1" gradleVersion="8.12" />
|
||||
<component name="MavenRunner">
|
||||
<option name="delegateBuildToMaven" value="true" />
|
||||
</component>
|
||||
@@ -76,6 +80,7 @@
|
||||
</component>
|
||||
<component name="PropertiesComponent">{
|
||||
"keyToString": {
|
||||
"Gradle.Download Sources.executor": "Run",
|
||||
"Gradle.GeyserModelEngine [build].executor": "Run",
|
||||
"Gradle.GeyserModelEngine [jar].executor": "Run",
|
||||
"Maven.GeyserModelEngine [install...].executor": "Run",
|
||||
@@ -84,6 +89,7 @@
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"RunOnceActivity.git.unshallow": "true",
|
||||
"git-widget-placeholder": "main",
|
||||
"kotlin-language-version-configured": "true",
|
||||
"last_opened_file_path": "D:/Coding/Forks/Minecraft/GeyserModelEngine",
|
||||
"project.structure.last.edited": "Project",
|
||||
"project.structure.proportion": "0.0",
|
||||
@@ -96,6 +102,7 @@
|
||||
<recent name="D:\Coding\Forks\Minecraft\GeyserModelEngine" />
|
||||
</key>
|
||||
<key name="MoveFile.RECENT_KEYS">
|
||||
<recent name="D:\Coding\Forks\Minecraft\GeyserModelEngine\.github\workflows" />
|
||||
<recent name="D:\Coding\Forks\Minecraft\GeyserModelEngine\libs" />
|
||||
</key>
|
||||
</component>
|
||||
|
||||
19
README.md
19
README.md
@@ -20,27 +20,22 @@ Download the following plugins according to what server software you use.
|
||||
- Put `GeyserModelEngine` in the plugins folder (only Spigot or forks of Spigot supported)
|
||||
- Put either `geyserutils-spigot` in your plugins folder aswell (`geyserutils-velocity`/`geyserutils-bungeecord` in your Velocity/Bungeecord plugins folder if you use it)
|
||||
- Put `GeyserModelEnginePackGenerator` and `geyserutils-geyser` into `plugins/[Geyser-Folder]/extensions`
|
||||
- Inside `floodgate` set `send-floodgate-data` to `true` in your Velocity/Bungeecord folder and copy over the key.pem into your backend `floodgate` folders
|
||||
|
||||
Start the server to generate the relevant configuration files, and then shut down the server to convert any models.
|
||||
|
||||
# Convert Models
|
||||
This is old method to convert model:
|
||||
|
||||
`GeyserModelEnginePackGenerator` is capable of generating models all by itself. After generating it will also apply this pack automatically.
|
||||
|
||||
- First go to `plugins/[Geyser-Folder]/extensions/geysermodelenginepackgenerator/input/`
|
||||
- Create a folder in this directory with the ID of the model. (this is the same name as your model within ModelEngine 4.)
|
||||
- Firstly, install [packer plugin](https://github.com/GeyserExtensionists/GeyserModelEngineBlockbenchPacker) for your blockbench.
|
||||
|
||||
- Then, open your bbmodel, go `File -> Export -> Export GeyserModelEngine Model`, you will get a zip, just unzip it to `input` folder.
|
||||
|
||||
<img src="docsimg/example.jpg" width="500">
|
||||
|
||||
> Each model should have a separate model folder
|
||||
> Subfolders are supported if you want to categorize them
|
||||
|
||||
- Now use BlockBench and convert your model to a Bedrock Entity, this will allow you to export the Bedrock Geometry and Animations.
|
||||
- Put the geometry, animations and texture file in this folder you've made.
|
||||
|
||||
<img src="docsimg/example1.jpg" width="500">
|
||||
|
||||
- Restart the server or reload geyser to start generating the resource pack.
|
||||
- Go to `plugins/[Geyser-Folder]/extensions/geysermodelenginepackgenerator`, and you should see your pack generated!
|
||||
|
||||
@@ -49,12 +44,6 @@ This is old method to convert model:
|
||||
- Final step, reload Geyser or restart the server to load the resource pack.
|
||||
- Congratulations, you've completed this tutorial!
|
||||
|
||||
# Model Packer
|
||||
|
||||
This is new way to convert model
|
||||
- Firstly, install [packer plugin](https://github.com/GeyserExtensionists/GeyserModelEngineBlockbenchPacker) for your blockbench.
|
||||
- Then, open your bbmodel, go `File -> Export -> Export GeyserModelEngine Model`, you will get a zip, just unzip it to `input` folder.
|
||||
|
||||
# Tips
|
||||
|
||||
* Pay attention! The pack only regenerates when the number of models changes, you can technically speaking remove the generated_pack folder to force a reload aswell.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
plugins {
|
||||
id("java")
|
||||
id("io.github.goooler.shadow") version "8.1.7"
|
||||
id("io.github.goooler.shadow") version "8.1.8"
|
||||
}
|
||||
|
||||
group = "re.imc"
|
||||
@@ -28,8 +28,8 @@ dependencies {
|
||||
compileOnly(files("libs/geyserutils-spigot-1.0-SNAPSHOT.jar"))
|
||||
compileOnly("org.geysermc.floodgate:api:2.2.4-SNAPSHOT")
|
||||
|
||||
|
||||
implementation("com.github.retrooper:packetevents-spigot:2.9.4")
|
||||
implementation("com.github.retrooper:packetevents-spigot:2.9.5")
|
||||
implementation("org.bstats:bstats-bukkit:3.0.2")
|
||||
|
||||
implementation("org.reflections:reflections:0.10.2")
|
||||
}
|
||||
@@ -50,6 +50,8 @@ tasks.shadowJar {
|
||||
relocate("com.github.retrooper", "re.imc.geysermodelengine.libs.com.github.retrooper.packetevents")
|
||||
relocate("io.github.retrooper", "re.imc.geysermodelengine.libs.io.github.retrooper.packetevents")
|
||||
|
||||
relocate("org.bstats", "re.imc.geysermodelengine.libs.bstats")
|
||||
|
||||
relocate("org.reflections", "re.imc.geysermodelengine.libs.reflections")
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.github.retrooper.packetevents.event.PacketListenerPriority;
|
||||
import dev.jorel.commandapi.CommandAPI;
|
||||
import dev.jorel.commandapi.CommandAPIBukkitConfig;
|
||||
import io.github.retrooper.packetevents.factory.spigot.SpigotPacketEventsBuilder;
|
||||
import org.bstats.bukkit.Metrics;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import re.imc.geysermodelengine.listener.ModelListener;
|
||||
@@ -43,6 +44,8 @@ public class GeyserModelEngine extends JavaPlugin {
|
||||
loadManagers();
|
||||
loadRunnables();
|
||||
|
||||
loadBStats();
|
||||
|
||||
PacketEvents.getAPI().getEventManager().registerListener(new MountPacketListener(this), PacketListenerPriority.NORMAL);
|
||||
|
||||
Bukkit.getPluginManager().registerEvents(new ModelListener(this), this);
|
||||
@@ -62,6 +65,10 @@ public class GeyserModelEngine extends JavaPlugin {
|
||||
CommandAPI.onEnable();
|
||||
}
|
||||
|
||||
private void loadBStats() {
|
||||
if (configManager.getConfig().getBoolean("bstats", true)) new Metrics(this, 26981);
|
||||
}
|
||||
|
||||
private void loadManagers() {
|
||||
this.configManager = new ConfigManager(this);
|
||||
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
package re.imc.geysermodelengine.listener;
|
||||
|
||||
import com.ticxo.modelengine.api.events.AddModelEvent;
|
||||
import com.ticxo.modelengine.api.events.ModelDismountEvent;
|
||||
import com.ticxo.modelengine.api.events.ModelMountEvent;
|
||||
import com.ticxo.modelengine.api.events.*;
|
||||
import com.ticxo.modelengine.api.model.ActiveModel;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
import org.bukkit.Bukkit;
|
||||
@@ -31,7 +29,6 @@ public class ModelListener implements Listener {
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onAddModel(AddModelEvent event) {
|
||||
if (event.isCancelled()) return;
|
||||
|
||||
plugin.getModelManager().create(event.getTarget(), event.getModel());
|
||||
}
|
||||
|
||||
@@ -54,6 +51,10 @@ public class ModelListener implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
/ xSquishyLiam:
|
||||
/ I'm wondering if we could move this to more of a player loading chunks instead of checking all worlds via PlayerChunkLoadEvent?
|
||||
*/
|
||||
@EventHandler
|
||||
public void onWorldInit(WorldInitEvent event) {
|
||||
World world = event.getWorld();
|
||||
@@ -61,13 +62,7 @@ public class ModelListener implements Listener {
|
||||
}
|
||||
|
||||
/*
|
||||
/ Temp fix till a better solution is found -
|
||||
/ the issue is when a player logs out and the mob is there,
|
||||
/ the player logs back in sometimes it can display as a pig only
|
||||
/ this issues mainly comes from the functions from EntityTaskManager
|
||||
/ sendSpawnPacket() and canSee()
|
||||
/
|
||||
/ TheLividaProject - conclusion:
|
||||
/ xSquishyLiam - conclusion:
|
||||
/ I'm assuming when a player joins the server the packet for mob spawning is instant so the client resyncs itself
|
||||
/ hence why the pig is shown instead of going invisible and not displaying the texture of the modeled mob
|
||||
*/
|
||||
|
||||
@@ -33,6 +33,6 @@ public class MountPacketListener implements PacketListener {
|
||||
if (seat == null) return;
|
||||
if (action.getAction() != WrapperPlayClientEntityAction.Action.START_SNEAKING) return;
|
||||
|
||||
ModelEngineAPI.getMountPairManager().tryDismount(event.getPlayer());
|
||||
ModelEngineAPI.getMountPairManager().tryDismount(player);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
bstats: true
|
||||
|
||||
data-send-delay: 5
|
||||
entity-view-distance: 50
|
||||
join-send-delay: 20
|
||||
|
||||
@@ -6,7 +6,6 @@ api-version: '1.21'
|
||||
authors:
|
||||
- zimzaza4
|
||||
- willem.dev
|
||||
- TheLividaProject
|
||||
|
||||
load: STARTUP
|
||||
|
||||
|
||||
Reference in New Issue
Block a user