Code Monkey home page Code Monkey logo

gomint's Introduction

GoMint is no longer actively maintained.

GoMint

Build Status GitHub Stars GitHub Stars GitHub Stars License

GoMint is a modern Minecraft Bedrock Edition server enabling you to make your visions come true

Start Sequence

❇ Getting Started

📦 Features

  • ⚡ High performance, fast startup and low resource usage
  • 🔧 Highly configurable via configuration files
  • 🔌 Functionality extendable via plugins
  • 🗝 Cryptography implementations in Rust
  • 💫 Crafting, enchanting, all blocks, all items

⏬ Download

The following one-liner scripts download the latest build, not the latest tag!GoMint requires Java version 11 or higher!

Windows Command Line

powershell.exe "$ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest -Uri 'https://gomint-artifacts.s3.amazonaws.com/latest.zip' -OutFile gomint.zip; $Random = Get-Random -Maximum 0xFFFFFF; Expand-Archive -LiteralPath gomint.zip -DestinationPath gomint-$Random; Write-Output gomint-$Random"

PowerShell

$ProgressPreference = 'SilentlyContinue'; `
    Invoke-WebRequest -Uri 'https://gomint-artifacts.s3.amazonaws.com/latest.zip' -OutFile gomint.zip; `
    $Random = Get-Random -Maximum 0xFFFFFF; `
    Expand-Archive -LiteralPath gomint.zip -DestinationPath gomint-$Random; `
    Write-Output gomint-$Random

Unix (Curl + Core Utils)

WORKSPACE=gomint-$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 6 | head -n 1) && \
	curl --silent -o gomint.zip https://gomint-artifacts.s3.amazonaws.com/latest.zip && \
	unzip gomint.zip -d $WORKSPACE && echo $WORKSPACE

Unix (Wget + Core Utils)

WORKSPACE=gomint-$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 6 | head -n 1) && \
	wget --quiet -O gomint.zip https://gomint-artifacts.s3.amazonaws.com/latest.zip && \
	unzip gomint.zip -d $WORKSPACE && echo $WORKSPACE

💠 Integration

CloudNet V3

Guide coming soon

Docker

Guide coming soon

Pterodactyl

Guide coming soon

⚒ Compilation

Bundled Maven (Windows Command Line)

mvnw clean install

Bundled Maven (Shell)

./mvnw.sh clean install

Local Maven Installation

mvn clean install

🚀 Developer setup

You need to run compilation at least once since there is a code generator configured. Once you have done that you can add io.gomint.server.Bootstrap as a runner. That runner needs custom options for Netty --add-opens java.base/java.nio=io.netty.common --add-exports java.base/jdk.internal.misc=io.netty.common --add-modules ALL-DEFAULT.

If not properly configured you will see this error when the first connection arrives:

[jRaknet events] WARN  io.netty.channel.DefaultChannelPipeline - An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.
java.lang.UnsupportedOperationException: sun.misc.Unsafe or java.nio.DirectByteBuffer.<init>(long, int) not available

👥 Contributors

📝 Code Contributors

This project exists thanks to all the people who contribute. [Contribute].

💸 Financial Contributors

Become a financial contributor and help us sustain our community. [Contribute]

Individuals

Organizations

Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]

gomint's People

Contributors

ali1v avatar bedrocks avatar cieldeville avatar delxhq avatar dependabot[bot] avatar derklaro avatar enricoangelon avatar gerrygames avatar github-actions[bot] avatar gominty avatar janmm14 avatar jihuayu avatar joserobjr avatar juliarn avatar kaooot avatar kcodeyt avatar lucgamesyt avatar lukeeey avatar monkeywithacupcake avatar nilsbrychzy avatar rjworks avatar severinkehding avatar theminecoder avatar whitegrouse 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gomint's Issues

Fehlende Dependencies auf Maven Repo

Hallo,

ich wollte das Projekt soeben importieren, allerdings fehlen auf den beiden Maven Repos folgende Dependencies:

io.gomint.taglib v. 0.2.1

io.gomint.jraknet v 1.3.4

Nametag is broken

Steps to reproduce

Join the server.
Spawn an entity and set a colored nametag
Rejoin
unknown

Command overload chooser shouldn't shortcut for optional arguments

@Name("teleport")
@Alias("tp")
@Overload({
        @Parameter(name = "position", validator = BlockPositionValidator.class )
})
@Overload({
        @Parameter(name = "target", validator = TargetValidator.class ),
        @Parameter(name = "position", validator = BlockPositionValidator.class, optional = true)
})
@Overload({
        @Parameter(name = "target", validator = TargetValidator.class ),
        @Parameter(name = "toTarget", validator = TargetValidator.class)
})

Entering /tp Spieler1 Spieler2 will use overload 2 without optional instead of overload 3:

arguments: {target=EntityHuman(username=RioluDev, uuid=018508b0-4857-30bc-a971-87c9767d10bc)}

The command overload algorithm should first treat optional arguments as required (and should then maybe prefer the overload with least amount of optionals).

A lot of sounds are not working

For example:
player.playSound(player.getLocation(), Sound.NOTE, (byte) 18, SoundData.instrument(Instrument.BASS));
-> no sound, no errors

Bossbar is not working (invisible)

EntityXPOrb bossBarOrbDE = EntityXPOrb.create();
bossBarOrbDE.setPickupDelay(365, TimeUnit.DAYS);
bossBarOrbDE.setTicking(false);
bossBarOrbDE.setNameTagAlwaysVisible(false);
bossBarOrbDE.setNameTagVisible(true);
bossBarOrbDE.setNameTag(ChatColor.BOLD + "" + ChatColor.WHITE + "►" + ChatColor.AQUA + " MultiLabs.net " + ChatColor.WHITE + "◄" + ChatColor.RESET);
bossBarOrbDE.spawn(new Location(GoMint.instance().getDefaultWorld(), 0, -10, 0));
		
bossBarOrbDE.getBossBar().addPlayer(event.getPlayer());

-> No bossbar is shown.
There are some crazy things too, sometimes if I spawn a floating text the text is shown as bossbar, too.

    private void spawnFloatingTextParticle(Location location, String text) {

        EntityHuman floatingText = EntityHuman.create();
        floatingText.setSkin(PlayerSkin.empty());
        floatingText.setScale(0f);
        floatingText.setTicking(false);
        floatingText.setNameTag(text);
        floatingText.spawn(location);

    }

NoDamage with amror

Man bekommt so gut wie kein Schaden mit der neusten Version so ist pvp unmöglich

´´Freeze´´ bug

Manche Spieler frieren ein und können selber noch rum laufen. Aber keine Kisten öffnen usw.
Für die anderen Spieler steht man nur herum, man kann trotzdem geschlagen werden LG

Feuer bug

Man brennt weiter wenn man in das wasser springen möchte

ToDo

  • Item Materials
  • Block Materials
  • Welten entladen
  • setSkin() (mit Input Stream, path, URL, etc.)
  • removeAllEffects()
  • Problem mit pmmp und nukkit Welten
  • Play a sound for a player only
  • send Title
  • add breaking API
  • EntityLiving add teleport
  • BossBar
  • player.getDirectionVector();
  • Floating Text Particle
  • Item Frames (Wegen den Maps, auf welchen Frames verbaut sind)
  • Clear Inventory soll Schild und Crafting Field mit leeren
  • PlayerToggleFlightEvent
  • NPCs
  • Farbige Lederrüstung
  • Elytra + isGliding()
  • getDefaultWorld

Nice to have

  • player.getX()...
  • broadcastMessage()
  • InteractEvent: getItem Shortcut
  • Inventory: remove (int)
  • Inventory: setItemInHand(ItemStack)

Bugs:

  • Man schwimmt in Wasser, wenn man nach vorne drückt, automatisch nach oben?

Add full IPv6 support

Since the client does support IPv6 Gomint should also implement support for it. jRaknet needs to implement the reading/writing of IPv6 for that.

Two or more serversettings are not working

image

CustomForm customForm1 = CustomForm.create("CustomForm1");
customForm1.setIcon("http://89.163.206.146/MultiLabs.png");
CustomForm customForm2 = CustomForm.create("CustomForm2");
		
event.getPlayer().addSettingsForm(customForm1);
event.getPlayer().addSettingsForm(customForm2);

NPC: ItemInHand is not updating after spawn

No item in hand:

// Spawn NPC
EntityHuman npc = EntityHuman.create();
npc.setSkin(PlayerSkin.fromURL("http://puu.sh/yHz9d/1dee829ba6.png"));
npc.setDisplayName("Test");
npc.spawn(player2.getLocation());    
npc.getInventory().setItem(npc.getInventory().getItemInHandSlot(), ItemIronSword.create(1));

Item in hand:

// Spawn NPC
EntityHuman npc = EntityHuman.create();
npc.setSkin(PlayerSkin.fromURL("http://puu.sh/yHz9d/1dee829ba6.png"));
npc.setDisplayName("Test");
npc.getInventory().setItem(npc.getInventory().getItemInHandSlot(), ItemIronSword.create(1));
npc.spawn(player2.getLocation());    

Java

Java is clearly for skids.

directionVector

ich hätte getDirectionVector 3d gemacht and dann evtl. noch getPlaneDirectionVector für 2d
Und die Methoden sollten dann auch in die Location-Klasse kopiert werden

IDE settings files

  • Unignore and add .idea/codeStyleSettings.xml for code style settings to be correct.
  • Unignore and add .idea/encodings.xml for file encoding to be correct.
  • Add .editorconfig file for basic support of other IDEs

Can break blocks like glass / ice

You can break blocks like glass and ice, although the blockbreak event ist cancelled. The block is for the player invisible, but for the other players not.

Cant hit other players with enchanted items

ItemStick itemStick = ItemStick.create(1);
itemStick.addEnchantment(EnchantmentKnockback.class, (short) 2);
event.getPlayer().getInventory().setItem(1, itemStick);

->
05:58:49.176 [main] WARN io.gomint.server.network.handler.PacketInventoryTransactionHandler - Goodstuff4UonYT item in hand does not match: ItemStack(material=0, data=0, amount=0, nbt=null, enchantments=null, dirtyEnchantments=false) / ItemStack(material=280, data=0, amount=1, nbt=NBTTagCompound(name=, children={ench=[NBTTagCompound(name=null, children={lvl=2, id=12})]}), enchantments=null, dirtyEnchantments=false)
-> no hit

Unknown command execution causes AIOBE

21:06:08.531 [main] DEBUG io.gomint.server.network.PlayerConnection - Packet: PacketCommandRequest(inputCommand=/lhihgiorhgir, commandOrigin=CommandOrigin(unknown1=0, uuid=8d85231a-c13a-4be0-9c85-195f5db450d1, unknown2=0, type=0))
21:06:08.532 [main] ERROR io.gomint.server.network.PlayerConnection - Error whilst processing packet:
 java.lang.ArrayIndexOutOfBoundsException: 1
        at io.gomint.server.network.handler.PacketCommandRequestHandler.handle(PacketCommandRequestHandler.java:47) ~[GoMint.jar:?]
        at io.gomint.server.network.handler.PacketCommandRequestHandler.handle(PacketCommandRequestHandler.java:21) ~[GoMint.jar:?]
        at io.gomint.server.network.PlayerConnection.handlePacket(PlayerConnection.java:550) ~[GoMint.jar:?]
        at io.gomint.server.network.PlayerConnection.handleBufferData(PlayerConnection.java:499) ~[GoMint.jar:?]
        at io.gomint.server.network.PlayerConnection.handleSocketData(PlayerConnection.java:423) ~[GoMint.jar:?]
        at io.gomint.server.network.PlayerConnection.updateNetwork(PlayerConnection.java:293) [GoMint.jar:?]
        at io.gomint.server.network.PlayerConnection.update(PlayerConnection.java:201) [GoMint.jar:?]
        at io.gomint.server.network.NetworkManager$1.accept(NetworkManager.java:75) [GoMint.jar:?]
        at io.gomint.server.network.NetworkManager$1.accept(NetworkManager.java:72) [GoMint.jar:?]
        at io.gomint.server.util.collection.KolobokePlayerConnectionMap.forEach(KolobokePlayerConnectionMap.java:179) [GoMint.jar:?]
        at io.gomint.server.network.NetworkManager.update(NetworkManager.java:197) [GoMint.jar:?]
        at io.gomint.server.GoMintServer.<init>(GoMintServer.java:306) [GoMint.jar:?]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_162]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) [?:1.8.0_162]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) [?:1.8.0_162]
        at java.lang.reflect.Constructor.newInstance(Unknown Source) [?:1.8.0_162]
        at io.gomint.server.Bootstrap.main(Bootstrap.java:103) [GoMint.jar:?]

Elytra Bug

GoMint> Unknown action id: 16
23:10:46.615 [main] ERROR io.gomint.server.network.PlayerConnection - Error whilst processing packet:
java.lang.NullPointerException: null
at io.gomint.server.network.handler.PacketPlayerActionHandler.handle(PacketPlayerActionHandler.java:25) ~[GoMint.jar:?]
at io.gomint.server.network.handler.PacketPlayerActionHandler.handle(PacketPlayerActionHandler.java:19) ~[GoMint.jar:?]
at io.gomint.server.network.PlayerConnection.handlePacket(PlayerConnection.java:534) ~[GoMint.jar:?]
at io.gomint.server.network.PlayerConnection.handleSocketData(PlayerConnection.java:463) ~[GoMint.jar:?]
at io.gomint.server.network.PlayerConnection.handleBatchPacket(PlayerConnection.java:514) ~[GoMint.jar:?]
at io.gomint.server.network.PlayerConnection.handleSocketData(PlayerConnection.java:451) ~[GoMint.jar:?]
at io.gomint.server.network.PlayerConnection.updateNetwork(PlayerConnection.java:269) [GoMint.jar:?]
at io.gomint.server.network.PlayerConnection.update(PlayerConnection.java:177) [GoMint.jar:?]
at io.gomint.server.network.NetworkManager$1.accept(NetworkManager.java:76) [GoMint.jar:?]
at io.gomint.server.network.NetworkManager$1.accept(NetworkManager.java:73) [GoMint.jar:?]
at io.gomint.server.util.collection.KolobokePlayerConnectionMap.forEach(KolobokePlayerConnectionMap.java:179) [GoMint.jar:?]
at io.gomint.server.network.NetworkManager.update(NetworkManager.java:199) [GoMint.jar:?]
at io.gomint.server.GoMintServer.(GoMintServer.java:307) [GoMint.jar:?]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_152]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) [?:1.8.0_152]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) [?:1.8.0_152]
at java.lang.reflect.Constructor.newInstance(Unknown Source) [?:1.8.0_152]
at io.gomint.server.Bootstrap.main(Bootstrap.java:98) [GoMint.jar:?]

Wenn ich mit einer Elytra lande oder versuche zu fliegen.

Sample world

Since I can't get any anvil world to load with GoMint, is there a sample map you use to test GoMint that you could provide a download link for?

Schedule chunk loading when TPS over 20

When you have to load 20 Chunks in 50ms you can load chunks 1 by 1 until 50ms has been completed. This reduced the initial load of loading and evens it out when you run more than 20 TPS

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.