Skapa ett Minecraft-plugin utan att koda
På en Minecraft-server går allt som går utöver grundspelet via ett plugin, och ett plugin skrivs i Java. Det är muren som de flesta serverägare kör huvudet in i: de vet precis vad de vill ha, och den enda vägen dit går via ett språk, ett projekt att kompilera och ett API att lära sig. Den här sidan förklarar vad du kan göra utan det, och framför allt var gränserna går.
Muren, och de tre kända sätten runt den
Innan NimBlock har den som inte kan programmera tre alternativ, och alla har en tydlig gräns som är bra att känna till innan man ger sig in på den.
- Kommandoblock. De lever i världen, på en bestämd plats, och utlöses av redstone eller en klocka. De kan inte reagera på en serverhändelse, och absolut inte förhindra den.
- Datapaket. De håller sig inom ramen för vanilla: funktioner, framsteg, bytestabeller. Inget riktigt kommando, ingen avlyssning av chatten, ingen möjlighet att avbryta en händelse. I gengäld körs de på en vanilla-server, utan Paper.
- Skript. Mycket kraftfullare än de två föregående, och kraftfullare än NimBlock. Det är ett riktigt språk, alltså en syntax att lära sig och fel att tolka.
Alla tre har funnits länge och är inte omoderna på något sätt. Det som saknades var steget mellan kommandoblocket och språket.
En regel, i en enda mening
Hela NimBlocks grammatik ryms i en enda mening: när detta händer, om dessa villkor stämmer, gör då detta. Ett plugin är en lista med regler, en regel är en utlösare, några villkor och några åtgärder. Det finns inget annat att lära sig, och det är medvetet: en grammatik som ryms i en mening ryms också i huvudet.
I redigeraren är det här block som klickar ihop: ett block som inte får plats någonstans klickar inte fast där. Och det som redigeraren släpper igenom fångar validatorn: en spec godkänns eller avvisas i sin helhet, aldrig till hälften. Ett skyddsplugin utan sin skyddsregel skulle inte synas i spelet, och det är precis den typen av fel man inte vill ha.
Vad du kan bygga idag
9 utlösare, 8 villkor, 14 åtgärder. Den exakta listan, uppdaterad och med alla parametrar i detalj, finns på grammatiksidan: den genereras från katalogen, så den ljuger aldrig. Kort om vad de gör möjligt:
- Reagera på det som händer: en anslutning, en frånkoppling, ett chattmeddelande, en död, ett block som förstörs eller placeras, ett kommando du hittar på själv, eller helt enkelt var N:e sekund.
- Filtrera på en behörighet, operatörsstatus, världen, hälsopoäng, innehållet i en text, en talsjämförelse, eller en sannolikhet.
- Agera: meddelanden, stora titlar, ljud, föremål, effekter, läkning, teleportering, meddelanden till hela servern, körning av ett konsolkommando, och avbrytande av händelsen som just inträffade. Det sista är det som gör listan till ett riktigt skydd.
Vad det inte ersätter
En sida som lovar allt hjälper ingen. Det här gör NimBlock inte:
- Ingen ny spelmekanik. En ny blocktyp, en helt ny entitet, ett skräddarsytt inventariegränssnitt: det är Java, och det kommer förbli Java.
- Inga variabler och inga loopar. En regel reagerar, den räknar inte. Om din idé kräver att lagra ett komplext tillstånd mellan två händelser är du bortom den här grammatiken.
- Inga tredjepartsplugin. NimBlock kör dina specs, det laddar inte en .jar som är nedladdad någon annanstans.
- Ett nytt kommando väntar på nästa omstart. Allt annat gäller direkt, utan att servern behöver stängas av, men Minecraft registrerar sina kommandon vid uppstart: panelen säger till när det händer, istället för att du upptäcker det i spelet.
Var pluginet körs
Ingenstans genereras och kompileras Java. Servern laddar en runtime som är skriven en gång för alla, och den runtimen läser din spec. Det är det som gör att ett plugin byggt här är fritt från teknisk skuld: när Minecraft ändras är det runtimen som anpassar sig, en gång, och inte varje plugin som skrivits med den.
På en NimBlock-server tar installationen ett klick, och pluginet installeras utan att spelet avbryts. Runtimen i sig kommer att publiceras i pluginkatalogerna, så att samma spec kan köras på en server som inte är hostad här.
Vanliga frågor
- Kan man verkligen göra ett Minecraft-plugin utan att kunna programmera?
- Ja, med ett villkor: du sätter ihop regler inom en given grammatik, du skriver inte ett godtyckligt program. En regel säger "när detta händer, om dessa villkor stämmer, gör då detta". Nästan allt en server mellan vänner behöver ryms i den formen: välkomstmeddelanden, belöningar, skydd, meddelanden, egna kommandon. Det som inte ryms är sådant som kräver att man uppfinner en hel spelmekanik, och då krävs Java.
- Vad är skillnaden mot kommandoblock?
- Kommandoblock lever i världen, på en bestämd plats, och utlöses av redstone eller en klocka. Ett plugin utlöses av en serverhändelse: en spelare som ansluter, ett block som förstörs, ett meddelande i chatten. Det kommandoblock inte kan göra är att reagera på det som händer, och framför allt förhindra att det händer. En NimBlock-regel kan avbryta händelsen som just inträffade.
- Och jämfört med ett datapaket?
- Ett datapaket håller sig inom ramen för vanilla-spelet: funktioner, framsteg, bytestabeller. Det kan inte lägga till ett riktigt kommando, avlyssna chatten eller avbryta en händelse. Ett Paper-plugin kan det, eftersom det körs i servern och inte i världens data. I gengäld fungerar ett datapaket på en vanilla-server, medan ett plugin kräver Paper eller Spigot.
- Och jämfört med Skript?
- Skript är föregångaren i sitt slag och det är avsevärt mycket kraftfullare, utan jämförelse: det är ett riktigt språk, med variabler, loopar och ett enormt bibliotek av tillägg. Det är också ett språk, alltså en syntax att lära sig, fel att läsa, och en fil som inte talar om var den gick sönder. NimBlock gör mycket mindre, men det avvisar en ogiltig regel innan den sparas och visar dig exakt var problemet sitter på det aktuella blocket. Om du är bekväm med Skript, håll dig till Skript.
- Kompileras pluginet till Java någonstans?
- Nej, och det är produktens centrala val. Din spec förblir en JSON-fil, och servern laddar en runtime som är skriven en gång för alla och som läser och kör den. Inget genereras, inget kompileras. Den praktiska konsekvensen: en ny Minecraft-version betalas en gång i den runtimen, inte i varje plugin som skrivits med den.
- Kan jag ta med pluginet till en server som inte är hostad hos NimBlock?
- Det är planen, och runtimen som läser specs kommer att publiceras i pluginkatalogerna. En spec är en vanlig JSON-fil: runtimen läser den från serverns plugins-mapp. Det är inte publicerat ännu när den här sidan skrivs.
Skapa din första regel, och se den köras på en server som redan finns.
Gratis under betan · en server på 1 GB per konto