MMOBlock is a powerful Bukkit plugin that revolutionizes your Minecraft server by introducing interactive custom entities and blocks. With seamless integration to popular plugins like ModelEngine, MMOItems, ItemsAdder, Nexo, and PlaceholderAPI, MMOBlock brings a new level of immersion and engagement to your server.
Features
- Custom Entities: Spawn and interact with customizable entities with advanced properties, animations, and conditions.
- Custom Blocks: Place invulnerable blocks with dynamic configurations, including support for ItemsAdder, Oraxen, and Nexo custom blocks.
- Holograms: Modern hologram system with gradients, hex colors, item displays, and multi-line spacing.
- Animations: Play ModelEngine animations on interaction or entity death.
- Advanced Drops & Rewards:
- Configure drops with chances, amount ranges, and multi-source items (vanilla, MMOItems, ItemsAdder, Nexo, MMOIdentifier).
- Client-Side Drops: Prevent lag with client-side item rendering.
- Lootsplosion: Visual explosion effects on drop.
- Item Beams/Glow: Customize beams (colors) and glowing effects (including rainbow) for dropped items.
- Per-player drops and profession EXP rewards (MMOCore).
- Tool Requirements: Define tools with durability loss, required clicks, and drop whitelists.
- Conditions: Enforce level (MMOCore), placeholder (PlaceholderAPI).
- Cooldowns: Prevent spamming with click cooldowns and respawn delays.
- Integration: Works with Nexo, MMOItems, MMOCore, ModelEngine, ItemsAdder, Oraxen, MMOIdentifier and PlaceholderAPI.
Installation
- Download MMOBlock from the Polymart resource page.
- Place the .jar file into your server’s plugins folder.
- Restart the server to generate configuration files.
- Configure entities/blocks in plugins/MMOBlock/block/<id>.yml (see below).
Configuration
Configurations are now modular. Each custom block/entity is defined in its own file under plugins/MMOBlock/block/<id>.yml.Example block/example.yml:
#config file version 2.8-latestexample: # section name and filename need to be the same, underscore will be not detected, you should rename the file to example.yml or remove the underscore send-title: "&eYour tool not matching!" # vanilla color code usage send-subtitle: "<red>or Tools are too low</red>" # color code usage click_cooldown: 0.5 action_bar: true #model: iron_ore #model from modelengine #on_click: hit;0;0;1 #animaniton_name;lerpin;lerpout;speed #ondeathanim: hit;0;0;1 #animaniton_name;lerpin;lerpout;speed respawn: 5 death_delay: 1 hitbox: size: 20 hologram: enable: true # enable/disable holo customHolo: # hologram line '1': # 1 meaning line 1, line 1 on top value: <#ANIM:wave:&1;#FFFFFF,10,10,u>Rainbow Ore</#ANIM> #value: "<#ANIM:wave:&1;#FFFFFF,20,20,u>RainbowOre</#ANIM>" # wave animation usage <#ANIM:wave:[color1];[color2];[color3];[etc],[(int) stay],[(int) transition],[bold<b>/italic<i>/underline<u>/strikethrough<st>]>Text</#ANIM> #value: "<#ANIM:fade:&1;#FFFFFF,20,20,u>RainbowOre</#ANIM>" # wave animation usage <#ANIM:fade:[color1];[color2];[color3];[etc],[(int) stay],[(int) transition],[bold<b>/italic<i>/underline<u>/strikethrough<st>]>Text</#ANIM> #value: "<#ANIM:colors:&1;#FFFFFF,20,20,u>RainbowOre</#ANIM>" # wave animation usage <#ANIM:colors:[color1];[color2];[color3];[etc],[(int) stay],[(int) transition],[bold<b>/italic<i>/underline<u>/strikethrough<st>]>Text</#ANIM> #value: "<#ANIM:scroll:&1;#FFFFFF,20,20,u>RainbowOre</#ANIM>" # wave animation usage <#ANIM:scroll:[color1];[color2];[color3];[etc],[(int) stay],[(int) transition],[bold<b>/italic<i>/underline<u>/strikethrough<st>]>Text</#ANIM> #value: "<#ANIM:typewriter:&1;#FFFFFF,u>RainbowOre</#ANIM>" # wave animation usage <#ANIM:typewriter:[color1];[color2];[color3];[etc],[bold<b>/italic<i>/underline<u>/strikethrough<st>]>Text</#ANIM> #value: "<#ANIM:burn:&1;#FFFFFF,u>RainbowOre</#ANIM>" # wave animation usage <#ANIM:burn:[color1],[color2],[bold<b>/italic<i>/underline<u>/strikethrough<st>]>Text</#ANIM> height: 0.4 # line spacing '2': value: <#ANIM:scroll:&e;&c,5,5,st>Required Mining Lvl 1 </#ANIM> # hex usage height: 0.4 '3': value: <#00FF00>[Click to Mine]</#00FF00> height: 0.4 '4': value: item # identifier to use item display id: DIAMOND_PICKAXE # item id custom_model_data: 0 # support custom model data height: 0.4 progressHolo: "1": value: <#ANIM:wave:&1;#FFFFFF,10,10,u>Rainbow Ore</#ANIM> height: 0.4 # line spacing "2": value: "&7[&f%progress_bar%&7]" # progress bar height: 0.4 # line spacing deathHolo: "1": value: <#ANIM:wave:&1;#FFFFFF,10,10,u>Rainbow Ore</#ANIM> height: 0.4 # line spacing "2": value: "<gradient:#FFA500:#F92986>Respawning in: %respawnTime%s</gradient>" # gradient usage height: 0.4 # line spacing detectionRange: 16 # range detect player to show hologram and hologram position hologramDistance: east: 5 # east cardinal positions max distance, if the value 0 always in center south: 5 # south cardinal positions max distance, if the value 0 always in center west: 4 # west cardinal positions max distance, if the value 0 always in center north: 4 # north cardinal positions max distance, if the value 0 always in center height: 2.5 # global height line customHolo clickHeight: 2.5 # global height line progressHolo respawnHeigth: 2.5 # global height line deathHolo shadowed: true # or false background: true block: onSpawn: path: "uglyTree.yml" adjustPlacement: x: 1 y: 0 z: 4 onDeath: path: "uglyTreeDead.yml" adjustPlacement: x: 1 y: 0 z: 4# block:# DIAMOND_ORE:# locations:# - 0, 0, 1, x, true# - 1, 0, 0, x, true# IRON_ORE:# locations:# - 1, 0, 1, x, true conditions: []# mmocore-level:# level: mining:1# send-title: "&eYour Level Is too Low"# send-subtitle: "<red>Minimum Level 1</red>"# condition1: #can make more than 1# first: '%vault_eco_balance%'# second: 500# operator: '>'# send-title: "&eYour funds not met"# send-subtitle: "<red>Minimum 500</red>" sounds: onClick: block.stone.hit onDeath: block.stone.break drop-options: ClientSideDrop: true PerPlayerDrop: true Lootsplosion: true ItemBeam: enable: true color: BLUE ItemGlowByDefault: enable: true color: RAINBOW allowed_tools: "1": material: DIAMOND_PICKAXE right_click: decreaseDurability: 10 clickNeeded: 3 left_click: decreaseDurability: 15 clickNeeded: 2 both_click: decreaseDurability: 15 clickNeeded: 4 allowedDrops: - exampledrop1 - exampledrop2 - exampledrop3 "2": material: stone_pickaxe both_click: decreaseDurability: 15 clickNeeded: 4 allowedDrops: - exampledrop1 "3": material: _iainternal:iron_pickaxe_custom #ItemsAdder right_click: decreaseDurability: 10 clickNeeded: 3 left_click: decreaseDurability: 15 clickNeeded: 2 allowedDrops: - exampledrop1 - exampledrop2 - exampledrop3 - exampledrop4 - exampledrop5 - example_drop7 "4": material: tool:steel_pickaxe #MMOItems both_click: decreaseDurability: 15 clickNeeded: 4 allowedDrops: [] #empty will allow all drops "5": material: forest_pickaxe #Nexo both_click: decreaseDurability: 15 clickNeeded: 4 allowedDrops: [] drops: exampledrop1: item: material: raw_iron total: [1-3] # drop lower amount is higher chance, higher amount is lower chance chances: 1 # 1 is 100 percent target: both_click #left_click or both_click drop_type: inventory #inventory, minepacks, front_ground(front of player), and center_ground(center of entity). exampledrop2: exp: value: [1-50] chances: 0.6 target: right_click #left_click or both_click drop_type: front_ground #front_ground(front of player), and center_ground(center of entity). example_drop7: profession: value: woodcutting #mmocore profession exp total: [ 1-30 ] chances: 0.6 target: left_click #left_click or both_click drop_type: front_ground #front_ground(front of player), and center_ground(center of entity). exampledrop4: item: material: _iainternal:iron_pickaxe_custom #itemsadder total: [1-2] chances: 0.3 target: right_click #left_click or both_click drop_type: inventory #inventory, minepacks, front_ground(front of player), and center_ground(center of entity). exampledrop5: item: material: tool:steel_pickaxe #mmoitems total: [1-2] chances: 0.3 target: right_click #left_click or both_click drop_type: inventory #inventory, minepacks, front_ground(front of player), and center_ground(center of entity). example_drop6: item: material: warrior_item #mmoidentifier total: [1-3] chances: 0.4 target: both_click #left_click or both_click drop_type: inventory #inventory, minepacks, front_ground(front of player), and center_ground(center of entity). exampledrop8: item: material: forest_pickaxe #Nexo total: [1-2] chances: 0.4 target: right_click #left_click or both_click drop_type: inventory #inventory, minepacks, front_ground(front of player), and center_ground(center of entity). exampledrop3: command: value: "give %player% diamond %amount%" #%player% and %amount% is internal placeholder amount: [ 1-10 ] chances: 0.2 target: right_click #left_click or both_clickCommands
- /mmoblock place <entityId> [world] [x] [y] [z]: Place entity.
- /mmoblock remove [all]: Remove entities guis or all.
- /mmoblock reload: Reload configurations.
Permissions
- mmoblock.place: Place entities.
- mmoblock.remove: Remove entities.
- mmoblock.reload: Reload plugin.
Integrations
- Nexo: Support for Nexo custom blocks and tools or drops.
- ItemsAdder: Support for ItemsAdder custom blocks and tools or drops.
- Oraxen: Support only custom blocks.
- MMOItems: Use custom items as tools or drops.
- MMOCore: Level requirements for interactions and profession exp drop.
- ModelEngine: Animate entities on click/death.
- packetevents: optimized for sending packet.
- PlaceholderAPI: Dynamic placeholders while interacting and usage for conditions.
- MMOIdentifier: Use custom items as drops.
Support
For support, join our Discord community.Preview Videos
New Update Test Server Version 1.19-1.21
Test on Server Version 1.21
Test on Server Version 1.19-1.20
Documentation
Visit the MMOBlock Wiki for guides and examples.Libraries Used
- NBT-API (shaded under plugin package)
- GlowingEntities (shaded under plugin package)
- packetevents
- xerial.sqlite-jdbc
- google.gson
- adventure