lorddeathunter / fabricwaystones Goto Github PK
View Code? Open in Web Editor NEWA Fabric mod for Minecraft that adds waystones - a new way of transportation, that let you teleport from one discovered waystone to another.
License: MIT License
A Fabric mod for Minecraft that adds waystones - a new way of transportation, that let you teleport from one discovered waystone to another.
License: MIT License
Hi! I really like your take on waypoints. Unfortunately something is wrong with the last two versions...
With (latest) version 1.1.0 I cannot join a world created with 1.0.10 (may have been one before that, cannot remember).
See latest.log
I can join the world, when I revert to version 1.0.10. (However, when jumping world, I sometimes get the same NullPointerException. That is teleporting from the Overworld into the Nether. Or Overworld into the End. Even chunk-loader does not always help e.g. jumping back from the End to the Overworld to a Waypoint in my chunk-loaded base.)
If it helps, I can try to reduce the number of mods... Problem is, I do not know what causes the error and therefore how to reproduce it in a simpler setup.
I only looked briefly over your code. I would guess that your client code expects some constants to be initialised, but the init is done in a server side only code block. Check where WaystonesClient.WAYSTONE_DATABASE is initialised. I can be very much completely wrong!
Cheers,
cryxli
I'm thinking a network or channel system would be a very useful feature. This would allow a player or group of players to create network of waystones linked to a unique tag.
This would be useful in a few ways. A player could organize their waystone networks based on utility (dimension, towns, farms, biomes, etc.)
Groups of friends could create a common network to each others bases without showing the network to a whole server (as global does).
Im thinking an added nbt string the player could define (similar to how the player defines the waystone name). When a waystone is accessed, it generates a list of waystones limited to only waystones with a matching 'channel' string.
Pocket wormholes could be shift+right clicked on a waystone and store the channel nbt to access just that channel or a global waystone to access the global list.
Im sorry if this has been asked for before - i did browse through the issue list to see if it had been suggested already.
So long story short, I binded a local void item to a waystone and the item disappeared (that is how the item works right). However, when right-clicking to anything else, it didn't teleport me at all. I repeated binding it again by crafting a new local void item to a waystone, and it still didn't work.
The Minecraft Version Is: 1.16.5
The Mod Version Is: 2.0.1
I hope you have a great day/night!
I've noticed a bug with the GUI alignment, where the whole selection screen is a bit too low and cuts into the "Inventory" text underneath it. Moving it all a few pixels up would solve this issue.
When you open the Waystone GUI, it automatically focuses the text entry so any key you press immediately begins typing in the Waystone name field.
It would be better if it did not auto-focus text entry, so you could easily close the Waystone GUI by pressing the Open Inventory key (default "E") instead of hitting Escape.
Having it only enter text entry mode when you manually click the area to enter your text in the field would be much simpler.
I am not seeing anything that allows me to retrieve payment from my waystone where people paid items to use.
v1.17.1
Video: https://streamable.com/s6slkn
Destorys shields and bows for example,
If you place down a waystone and brake it with a hammer that mines 3x by 3x it dupes the waystone.
User is trying to use a waystone and i am getting this error in console
java.lang.NullPointerException: Cannot invoke "java.util.UUID.equals(Object)" because the return value of "wraith.waystones.block.WaystoneBlockEntity.getOwner()" is null
at wraith.waystones.block.WaystoneBlock.method_9534(WaystoneBlock.java:196) ~[wraith-waystones-2.0.4.jar:?]
at net.minecraft.class_4970$class_4971.method_26174(class_4970.java:938) ~[intermediary-server.jar:?]
at net.minecraft.class_3225.redirect$dfj000$activateWithOptionalCactus(class_3225.java:4029) ~[intermediary-server.jar:?]
at net.minecraft.class_3225.method_14262(class_3225.java:327) ~[intermediary-server.jar:?]
at net.minecraft.class_3244.method_12046(class_3244.java:1050) ~[intermediary-server.jar:?]
at net.minecraft.class_2885.method_12547(class_2885.java:30) ~[intermediary-server.jar:?]
at net.minecraft.class_2885.method_11054(class_2885.java:8) ~[intermediary-server.jar:?]
at net.minecraft.class_2600.method_11072(class_2600.java:21) ~[intermediary-server.jar:?]
at net.minecraft.class_3738.run(class_3738.java:18) ~[intermediary-server.jar:?]
at net.minecraft.class_1255.redirect$glo000$redirectExecuteTask(class_1255.java:521) ~[intermediary-server.jar:?]
at net.minecraft.class_1255.method_16075(class_1255.java:125) ~[intermediary-server.jar:?]
at net.minecraft.server.MinecraftServer.method_20415(MinecraftServer.java:770) ~[intermediary-server.jar:?]
at net.minecraft.server.MinecraftServer.method_16075(MinecraftServer.java:764) ~[intermediary-server.jar:?]
at net.minecraft.class_1255.method_5383(class_1255.java:110) ~[intermediary-server.jar:?]
at net.minecraft.server.MinecraftServer.method_16208(MinecraftServer.java:748) ~[intermediary-server.jar:?]
at net.minecraft.server.MinecraftServer.handler$dcm000$modifiedRunLoop(MinecraftServer.java:9399) ~[intermediary-server.jar:?]
at net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:676) ~[intermediary-server.jar:?]
at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:270) ~[intermediary-server.jar:?]
at java.lang.Thread.run(Thread.java:831) [?:?]
Right now its ridiculously easy to use a Local Void or Abyss Watcher (which aren't particularly expensive) to escape any remotely dangerous situation. Falling into void, lava, or even mobs of enemies.
The easiest solution would be having a timer of configurable lenght start when you attempt teleportation and have the teleportation only happen after it passes.
It would also be nice if there was an option to make the timer reset or cancel if the person gets hit or moves.
The game crashes before its outside of the loading screen with this build. Crash log:
crash-2020-11-03_09.35.57-client.txt
Is this a modpack or mod issue?
(if something is screwy using a certain mod, then send the bug to the mod dev first.)
PLEASE MENTION IF YOU ADDED ANY MODS.. ESPECIALLY SODIUM, IF YOU DON'T, IT MAKES US VERY GRUMPY
Modpack Version
(any bugs using a non-up-to-date version will be asked to replicate with the most up-to-date release)
Describe the bug
A clear and concise description of what the bug is.
[01:40:45] [Server thread/FATAL]: Error executing task on Server
java.lang.NullPointerException: null
at wraith.waystones.WaystoneDatabase.removeWaystone(WaystoneDatabase.java:169) ~[wraith-waystones-1.1.1.1.jar:?]
at wraith.waystones.block.WaystoneBlock.method_9536(WaystoneBlock.java:201) ~[wraith-waystones-1.1.1.1.jar:?]
at net.minecraft.class_4970$class_4971.method_26197(class_4970.java:870) ~[intermediary-server.jar:?]
at net.minecraft.class_2818.method_12010(class_2818.java:276) ~[intermediary-server.jar:?]
at net.minecraft.class_1937.method_30092(class_1937.java:231) ~[intermediary-server.jar:?]
at net.minecraft.class_1937.method_8652(class_1937.java:217) ~[intermediary-server.jar:?]
at com.terraformersmc.campanion.block.BaseTentBlock.method_9576(BaseTentBlock.java:123) ~[campanion-1.3.5.jar:?]
at net.minecraft.class_3225.method_14266(class_3225.java:248) ~[intermediary-server.jar:?]
at net.minecraft.class_3225.method_21717(class_3225.java:222) ~[intermediary-server.jar:?]
at net.minecraft.class_3225.method_14263(class_3225.java:197) ~[intermediary-server.jar:?]
at net.minecraft.class_3244.method_12066(class_3244.java:1008) ~[intermediary-server.jar:?]
at net.minecraft.class_2846.method_12361(class_2846.java:40) ~[intermediary-server.jar:?]
at net.minecraft.class_2846.method_11054(class_2846.java:10) ~[intermediary-server.jar:?]
at net.minecraft.class_2600.method_11072(class_2600.java:21) ~[intermediary-server.jar:?]
at net.minecraft.class_3738.run(class_3738.java:18) ~[intermediary-server.jar:?]
at net.minecraft.class_1255.method_18859(class_1255.java:144) ~[intermediary-server.jar:?]
at net.minecraft.class_4093.method_18859(class_4093.java:23) ~[intermediary-server.jar:?]
at net.minecraft.server.MinecraftServer.method_24306(MinecraftServer.java:761) ~[intermediary-server.jar:?]
at net.minecraft.server.MinecraftServer.method_18859(MinecraftServer.java:155) ~[intermediary-server.jar:?]
at net.minecraft.class_1255.method_16075(class_1255.java:118) ~[intermediary-server.jar:?]
at net.minecraft.server.MinecraftServer.method_20415(MinecraftServer.java:743) ~[intermediary-server.jar:?]
at net.minecraft.server.MinecraftServer.method_16075(MinecraftServer.java:737) ~[intermediary-server.jar:?]
at net.minecraft.class_1255.method_18857(class_1255.java:127) ~[intermediary-server.jar:?]
at net.minecraft.server.MinecraftServer.method_16208(MinecraftServer.java:722) ~[intermediary-server.jar:?]
at net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:674) ~[intermediary-server.jar:?]
at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:257) ~[intermediary-server.jar:?]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_251]
[01:41:08] [Server thread/FATAL]: Error executing task on Server
java.lang.NullPointerException: null
at wraith.waystones.WaystoneDatabase.removeWaystone(WaystoneDatabase.java:169) ~[wraith-waystones-1.1.1.1.jar:?]
at wraith.waystones.block.WaystoneBlock.method_9536(WaystoneBlock.java:199) ~[wraith-waystones-1.1.1.1.jar:?]
at net.minecraft.class_4970$class_4971.method_26197(class_4970.java:870) ~[intermediary-server.jar:?]
at net.minecraft.class_2818.method_12010(class_2818.java:276) ~[intermediary-server.jar:?]
at net.minecraft.class_1937.method_30092(class_1937.java:231) ~[intermediary-server.jar:?]
at net.minecraft.class_1937.method_8652(class_1937.java:217) ~[intermediary-server.jar:?]
at com.terraformersmc.campanion.block.BaseTentBlock.method_9576(BaseTentBlock.java:123) ~[campanion-1.3.5.jar:?]
at net.minecraft.class_3225.method_14266(class_3225.java:248) ~[intermediary-server.jar:?]
at net.minecraft.class_3225.method_21717(class_3225.java:222) ~[intermediary-server.jar:?]
at net.minecraft.class_3225.method_14263(class_3225.java:197) ~[intermediary-server.jar:?]
at net.minecraft.class_3244.method_12066(class_3244.java:1008) ~[intermediary-server.jar:?]
at net.minecraft.class_2846.method_12361(class_2846.java:40) ~[intermediary-server.jar:?]
at net.minecraft.class_2846.method_11054(class_2846.java:10) ~[intermediary-server.jar:?]
at net.minecraft.class_2600.method_11072(class_2600.java:21) ~[intermediary-server.jar:?]
at net.minecraft.class_3738.run(class_3738.java:18) ~[intermediary-server.jar:?]
at net.minecraft.class_1255.method_18859(class_1255.java:144) ~[intermediary-server.jar:?]
at net.minecraft.class_4093.method_18859(class_4093.java:23) ~[intermediary-server.jar:?]
at net.minecraft.server.MinecraftServer.method_24306(MinecraftServer.java:761) ~[intermediary-server.jar:?]
at net.minecraft.server.MinecraftServer.method_18859(MinecraftServer.java:155) ~[intermediary-server.jar:?]
at net.minecraft.class_1255.method_16075(class_1255.java:118) ~[intermediary-server.jar:?]
at net.minecraft.server.MinecraftServer.method_20415(MinecraftServer.java:743) ~[intermediary-server.jar:?]
at net.minecraft.server.MinecraftServer.method_16075(MinecraftServer.java:737) ~[intermediary-server.jar:?]
at net.minecraft.class_1255.method_18857(class_1255.java:127) ~[intermediary-server.jar:?]
at net.minecraft.server.MinecraftServer.method_16208(MinecraftServer.java:722) ~[intermediary-server.jar:?]
at net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:674) ~[intermediary-server.jar:?]
at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:257) ~[intermediary-server.jar:?]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_251]
To Reproduce
Steps to reproduce the behavior:
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Logs
(you can use https://paste.alloffabric.com)
Additional context
Add any other context about the problem here.
Let me know if further info is needed - Thanks!
Some people have been getting crashes that were super strange to figure out. https://pastebin.com/qr9iiaUT
Mapped showed that the issue lied in NoiseChunkGenerator due to some sort of array out of bounds issue.
After some debugging, we got a list of mods that mixin into that class.
From there, I went through each mod's mixin and found this line of code in Waystone. I had the user remove waystone and the crash went away.
So it seems that because this is removing by index, that means after 1 element is removed, all other indices are now incorrect and if any indices were pointing at the end of the array, those will cause the index out of bounds crash.
Hope this helps make it easy to fix the issue! For now, the solution is to remove Waystone, generate the village, and put it back on.
The latest version causes the game to crash without any error notification window.
The crash log is here: https://gist.github.com/CapoFantasma97/424c4d004b3698d475a7e83963d71298
java.lang.RuntimeException: Could not execute entrypoint stage 'client' due to errors, provided by 'waystones'!
Caused by: java.lang.NoSuchMethodError: 'void com.telepathicgrunt.repurposedstructures.world.structures.pieces.StructurePiecesBehavior.addRequiredVillagePiece(java.lang.String, net.minecraft.class_2960, int)'
at wraith.waystones.compat.RepurposedStructuresCompat.init(RepurposedStructuresCompat.java:35)
at wraith.waystones.client.WaystonesClient.onInitializeClient(WaystonesClient.java:36)
at net.fabricmc.loader.impl.entrypoint.EntrypointUtils.invoke0(EntrypointUtils.java:47)
When I go through a way stone I usually have to disconnect from the server and join back in order to get the world to load.
I know there's a rewrite coming but thought I'd bring these to your attention at the very least. Feel free to close if solved.
Having 2 waystones with the same name seem to be causing issues.
Also, "Pocket Wormhole disappears if used in offhand rather than hotbar. It also duplicates whatever you are holding in the hotbar when used offhand," from one of my players.
Attempting to pick up a camp from Nomad Books with a Waystone within the area prevents the camp from properly being removed, and prints a stacktrace to console. Possible dupe bug as the camp can still be deployed from the book despite the original not being removed.
https://gist.github.com/ProsperCraft/f91671463731090b7e9d4414b7f52640
So I notice at this line you cast the packet context to the client play network handler:
https://github.com/LordDeatHunter/FabricWaystones/blob/main/src/main/java/wraith/waystones/WaystonesClient.java#L29
In my testing of the new networking api on AOF 3, I noticed your mod causes the client to disconnect due to the use of the implementation detail where the packet context is mixed into the client play network handler.
The specific error is:
[17:02:32] [Netty Epoll Client IO #3/ERROR]: Encountered exception while handling in channel with name "waystones:waystone_packet"
java.lang.ClassCastException: net.fabricmc.fabric.impl.networking.ClientSidePacketRegistryImpl$1 cannot be cast to net.minecraft.class_634
at wraith.waystones.WaystonesClient.lambda$registerPacketHandlers$0(WaystonesClient.java:29) ~[wraith-waystones-1.0.9.jar:?]
at net.fabricmc.fabric.impl.networking.ClientSidePacketRegistryImpl.lambda$register$0(ClientSidePacketRegistryImpl.java:65) ~[4ce7287c-cfbc-485c-ae9f-89c2e40c3485.jar:?]
at net.fabricmc.fabric.impl.networking.client.ClientPlayNetworkAddon.receive(ClientPlayNetworkAddon.java:87) ~[a474943c-f5db-4baf-94b5-5a464f8767b4.jar:?]
To solve this issue, I would get the network handler from the Minecraft client (MinecraftClient.getInstance().getNetworkHandler()
), OR upcast the player to ClientPlayerEntity
and then get the network handler from the client player entity.
Mods are in the file.
Currently, there is no way to make Fabric Waystones waypoint teleportation cost hunger. I would like to suggest adding a configuration option to do exactly that.
When a teleport is attempted for a cost in food points,
Food + Sat - Exh/4 >= Cost
Food
is your hunger, Sat
is your saturation rounded up, Exh
is your exhaustion, Cost
is the hunger cost.player.getHungerManager().addExhaustion(4 * Cost)
to deduct the food stats.Possible use cases:
Add waypoint integration with Xaero, Voxel, Antique Atlas, etc...
https://imgur.com/NqXv8zc
this is a thing
Here's the mentioned bug I ran into: Revoking ownership will null
the owner
(I assume), which will then crash when trying to put it into the NbtCompound
here:
FabricWaystones/src/main/java/wraith/waystones/screens/WaystoneScreen.java
Lines 541 to 553 in b992fa5
Not sure what's the easiest fix - using the 0 UUID to mean "no owner" would probably be good enough, alternatively another boolean
field could be stored which indicates whether the owner UUID is set or not.
The controller (used through LambdaControls) can not scroll through the list of Waystones in the interface. Easy fix would be to add a button for scrolling up and down through the list (maybe optionally?) as well as the scroll slider. This would be awesome.
I use Drogtor the Nickinator on a server that has Waystones on it, and another player and I realized that our known waystones were wiped after we set a nickname. Also because of Drogtor having no name enforcement, what stops a player from accessing or even modifying another player's waystone list.
Hi LordDeatHunter,
I've been enjoying the mod so far. It's very nice to have this functionality for Fabric.
I have found however, that if I activate a Waystone and then later break the block it will still appear in the list of targets and will allow me to teleport to the location the Waystone used to be. It does not appear that there is a way for a player to remove unwanted or non-existent waystones from their list at this time.
I see a couple of possible ways to allow something like this:
I'm not very familiar with the available APIs otherwise I would offer to help out a bit more.
Thanks for all your efforts. Take care.
fretboardfreak
XP levels increase slower the higher you are, meaning if you're go from 1 to 100, that's a lot more work than going from 0 to 1. It would be nice to be able to pay for the waystones using the XP value rather than level.
I play on an Modded SMP with the Fabric Waystone Mod added on.
It works well but once I gave my friend the scroll, they got access to all of my secret Waystones.
I dont know how to get them to delete them. Its getting really annoying.
Can you make it so it only adds the waystone that is added and not make it override the others waystones that I had.
Simular Story before this one: My friend gave me his one and I clicked on it and all of my previous Waystones were replaced with his ones.
Can you fix this bug please?
We have Waystones installed on a server and I have about a half dozen discovered. They are now all mixed up. None of the ones I named take me to the right place, one of them reverted back to its original name, and one of them I can't even get to now.
When holding the diamond lasso in-hand and right clicking the waystone from wraith-waystones mod, the entity was deleted. version 1.16.5 BETA (AOF3 pack)
(and Loom to the 0.7 snapshot) to be able to build with Java 16.
FAILURE: Build failed with an exception.
* Where:
Settings file '/home/k0rr/Downloads/Dehydration-master/settings.gradle'
* What went wrong:
Could not compile settings file '/home/k0rr/Downloads/Dehydration-master/settings.gradle'.
> startup failed:
General error during semantic analysis: Unsupported class file major version 60
java.lang.IllegalArgumentException: Unsupported class file major version 60
at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:196)
at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:177)
at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:163)
at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:284)
at org.codehaus.groovy.ast.decompiled.AsmDecompiler.parseClass(AsmDecompiler.java:81)
at org.codehaus.groovy.control.ClassNodeResolver.findDecompiled(ClassNodeResolver.java:251)
at org.codehaus.groovy.control.ClassNodeResolver.tryAsLoaderClassOrScript(ClassNodeResolver.java:189)
at org.codehaus.groovy.control.ClassNodeResolver.findClassNode(ClassNodeResolver.java:169)
at org.codehaus.groovy.control.ClassNodeResolver.resolveName(ClassNodeResolver.java:125)
at org.codehaus.groovy.ast.decompiled.AsmReferenceResolver.resolveClassNullable(AsmReferenceResolver.java:57)
at org.codehaus.groovy.ast.decompiled.AsmReferenceResolver.resolveClass(AsmReferenceResolver.java:44)
at org.codehaus.groovy.ast.decompiled.AsmReferenceResolver.resolveNonArrayType(AsmReferenceResolver.java:79)
at org.codehaus.groovy.ast.decompiled.AsmReferenceResolver.resolveType(AsmReferenceResolver.java:70)
at org.codehaus.groovy.ast.decompiled.MemberSignatureParser.createMethodNode(MemberSignatureParser.java:57)
at org.codehaus.groovy.ast.decompiled.DecompiledClassNode$2.get(DecompiledClassNode.java:234)
at org.codehaus.groovy.ast.decompiled.DecompiledClassNode$2.get(DecompiledClassNode.java:231)
at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.createMethodNode(DecompiledClassNode.java:242)
at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitMembers(DecompiledClassNode.java:199)
at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getDeclaredMethods(DecompiledClassNode.java:122)
at org.codehaus.groovy.ast.ClassNode.getMethods(ClassNode.java:912)
at org.codehaus.groovy.ast.ClassNode.tryFindPossibleMethod(ClassNode.java:1280)
at org.codehaus.groovy.control.StaticImportVisitor.transformMethodCallExpression(StaticImportVisitor.java:252)
at org.codehaus.groovy.control.StaticImportVisitor.transform(StaticImportVisitor.java:113)
at org.codehaus.groovy.ast.ClassCodeExpressionTransformer.visitExpressionStatement(ClassCodeExpressionTransformer.java:142)
at org.codehaus.groovy.ast.stmt.ExpressionStatement.visit(ExpressionStatement.java:40)
at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClassCodeContainer(ClassCodeVisitorSupport.java:110)
at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitConstructorOrMethod(ClassCodeVisitorSupport.java:121)
at org.codehaus.groovy.ast.ClassCodeExpressionTransformer.visitConstructorOrMethod(ClassCodeExpressionTransformer.java:53)
at org.codehaus.groovy.control.StaticImportVisitor.visitConstructorOrMethod(StaticImportVisitor.java:89)
at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitConstructor(ClassCodeVisitorSupport.java:128)
at org.codehaus.groovy.ast.ClassNode.visitContents(ClassNode.java:1099)
at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClass(ClassCodeVisitorSupport.java:54)
at org.codehaus.groovy.control.StaticImportVisitor.visitClass(StaticImportVisitor.java:83)
at org.codehaus.groovy.control.CompilationUnit$14.call(CompilationUnit.java:708)
at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1084)
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:640)
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:618)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:595)
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:401)
at groovy.lang.GroovyClassLoader.access$300(GroovyClassLoader.java:89)
at groovy.lang.GroovyClassLoader$5.provide(GroovyClassLoader.java:341)
at groovy.lang.GroovyClassLoader$5.provide(GroovyClassLoader.java:338)
at org.codehaus.groovy.runtime.memoize.ConcurrentCommonCache.getAndPut(ConcurrentCommonCache.java:147)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:336)
at org.gradle.groovy.scripts.internal.DefaultScriptCompilationHandler.compileScript(DefaultScriptCompilationHandler.java:141)
at org.gradle.groovy.scripts.internal.DefaultScriptCompilationHandler.compileToDir(DefaultScriptCompilationHandler.java:97)
at org.gradle.groovy.scripts.internal.BuildOperationBackedScriptCompilationHandler$2.run(BuildOperationBackedScriptCompilationHandler.java:54)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:395)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:387)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:157)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:242)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:150)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:84)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.groovy.scripts.internal.BuildOperationBackedScriptCompilationHandler.compileToDir(BuildOperationBackedScriptCompilationHandler.java:51)
at org.gradle.groovy.scripts.internal.FileCacheBackedScriptClassCompiler$CompileToCrossBuildCacheAction.execute(FileCacheBackedScriptClassCompiler.java:190)
at org.gradle.groovy.scripts.internal.FileCacheBackedScriptClassCompiler$CompileToCrossBuildCacheAction.execute(FileCacheBackedScriptClassCompiler.java:170)
at org.gradle.groovy.scripts.internal.FileCacheBackedScriptClassCompiler$ProgressReportingInitializer.execute(FileCacheBackedScriptClassCompiler.java:215)
at org.gradle.groovy.scripts.internal.FileCacheBackedScriptClassCompiler$ProgressReportingInitializer.execute(FileCacheBackedScriptClassCompiler.java:194)
at org.gradle.cache.internal.DefaultPersistentDirectoryCache$Initializer.initialize(DefaultPersistentDirectoryCache.java:100)
at org.gradle.cache.internal.FixedSharedModeCrossProcessCacheAccess$1.run(FixedSharedModeCrossProcessCacheAccess.java:86)
at org.gradle.cache.internal.DefaultFileLockManager$DefaultFileLock.doWriteAction(DefaultFileLockManager.java:215)
at org.gradle.cache.internal.DefaultFileLockManager$DefaultFileLock.writeFile(DefaultFileLockManager.java:205)
at org.gradle.cache.internal.FixedSharedModeCrossProcessCacheAccess.open(FixedSharedModeCrossProcessCacheAccess.java:83)
at org.gradle.cache.internal.DefaultCacheAccess.open(DefaultCacheAccess.java:139)
at org.gradle.cache.internal.DefaultPersistentDirectoryStore.open(DefaultPersistentDirectoryStore.java:78)
at org.gradle.cache.internal.DefaultPersistentDirectoryStore.open(DefaultPersistentDirectoryStore.java:42)
at org.gradle.cache.internal.DefaultCacheFactory.doOpen(DefaultCacheFactory.java:95)
at org.gradle.cache.internal.DefaultCacheFactory.open(DefaultCacheFactory.java:68)
at org.gradle.cache.internal.DefaultCacheRepository$PersistentCacheBuilder.open(DefaultCacheRepository.java:126)
at org.gradle.groovy.scripts.internal.FileCacheBackedScriptClassCompiler.compile(FileCacheBackedScriptClassCompiler.java:111)
at org.gradle.groovy.scripts.internal.CrossBuildInMemoryCachingScriptClassCache.getOrCompile(CrossBuildInMemoryCachingScriptClassCache.java:50)
at org.gradle.groovy.scripts.internal.BuildScopeInMemoryCachingScriptClassCompiler.compile(BuildScopeInMemoryCachingScriptClassCompiler.java:50)
at org.gradle.groovy.scripts.DefaultScriptCompilerFactory$ScriptCompilerImpl.compile(DefaultScriptCompilerFactory.java:49)
at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:110)
at org.gradle.configuration.BuildOperationScriptPlugin$1$1.run(BuildOperationScriptPlugin.java:69)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:395)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:387)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:157)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:242)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:150)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:84)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.configuration.BuildOperationScriptPlugin$1.execute(BuildOperationScriptPlugin.java:66)
at org.gradle.configuration.BuildOperationScriptPlugin$1.execute(BuildOperationScriptPlugin.java:63)
at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.apply(DefaultUserCodeApplicationContext.java:49)
at org.gradle.configuration.BuildOperationScriptPlugin.apply(BuildOperationScriptPlugin.java:63)
at org.gradle.initialization.ScriptEvaluatingSettingsProcessor.applySettingsScript(ScriptEvaluatingSettingsProcessor.java:74)
at org.gradle.initialization.ScriptEvaluatingSettingsProcessor.process(ScriptEvaluatingSettingsProcessor.java:67)
at org.gradle.initialization.SettingsEvaluatedCallbackFiringSettingsProcessor.process(SettingsEvaluatedCallbackFiringSettingsProcessor.java:34)
at org.gradle.initialization.RootBuildCacheControllerSettingsProcessor.process(RootBuildCacheControllerSettingsProcessor.java:36)
at org.gradle.initialization.BuildOperationSettingsProcessor$2.call(BuildOperationSettingsProcessor.java:50)
at org.gradle.initialization.BuildOperationSettingsProcessor$2.call(BuildOperationSettingsProcessor.java:47)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:409)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:399)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:157)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:242)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:150)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:94)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
at org.gradle.initialization.BuildOperationSettingsProcessor.process(BuildOperationSettingsProcessor.java:47)
at org.gradle.initialization.DefaultSettingsLoader.findSettingsAndLoadIfAppropriate(DefaultSettingsLoader.java:120)
at org.gradle.initialization.DefaultSettingsLoader.findAndLoadSettings(DefaultSettingsLoader.java:58)
at org.gradle.initialization.SettingsAttachingSettingsLoader.findAndLoadSettings(SettingsAttachingSettingsLoader.java:35)
at org.gradle.internal.composite.CommandLineIncludedBuildSettingsLoader.findAndLoadSettings(CommandLineIncludedBuildSettingsLoader.java:34)
at org.gradle.internal.composite.ChildBuildRegisteringSettingsLoader.findAndLoadSettings(ChildBuildRegisteringSettingsLoader.java:52)
at org.gradle.internal.composite.CompositeBuildSettingsLoader.findAndLoadSettings(CompositeBuildSettingsLoader.java:35)
at org.gradle.initialization.DefaultSettingsPreparer.prepareSettings(DefaultSettingsPreparer.java:36)
at org.gradle.initialization.BuildOperatingFiringSettingsPreparer$LoadBuild.doLoadBuild(BuildOperatingFiringSettingsPreparer.java:59)
at org.gradle.initialization.BuildOperatingFiringSettingsPreparer$LoadBuild.run(BuildOperatingFiringSettingsPreparer.java:54)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:395)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:387)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:157)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:242)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:150)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:84)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.initialization.BuildOperatingFiringSettingsPreparer.prepareSettings(BuildOperatingFiringSettingsPreparer.java:42)
at org.gradle.initialization.DefaultGradleLauncher.prepareSettings(DefaultGradleLauncher.java:210)
at org.gradle.initialization.DefaultGradleLauncher.doClassicBuildStages(DefaultGradleLauncher.java:151)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:140)
at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:120)
at org.gradle.internal.invocation.GradleBuildController$1.create(GradleBuildController.java:74)
at org.gradle.internal.invocation.GradleBuildController$1.create(GradleBuildController.java:67)
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:180)
at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:40)
at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:67)
at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:56)
at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:31)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:63)
at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:39)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:51)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:45)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:409)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:399)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:157)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:242)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:150)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:94)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:45)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:50)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:47)
at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:80)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:47)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:31)
at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:42)
at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:28)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:87)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:55)
at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:60)
at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:38)
at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:68)
at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:38)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:37)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:26)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:60)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:32)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:56)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:42)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:48)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:32)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:68)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:39)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:29)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:35)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:78)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:75)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:75)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:63)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:82)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:52)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
at java.base/java.lang.Thread.run(Thread.java:831)
1 error
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 2s
Take a look at CaffeineMC/sodium-fabric#630
PLEASE HELP IDK WHY IT NO WORK I UPDATE AND IT BROKEN :(
After some careful thought, I've accumulated several ideas for Waystones that might be worth implementing.
They are as follows...
Currently, Waystones already come with an Ender Pearl built in.
But what if they don't, and you have to manually add one to activate the Waystone for interaction?
Think of it like the End Portal. In order to interact with that, you need to add Eyes of Ender.
So imagine having to add an Eye of Ender to the Waystone to access the teleportation GUI!
You can add an Eye of Ender to a Waystone by looking at it while right-clicking with one if your hand.
Once you add the Eye of Ender, the Waystone will become activated and stay activated until it is broken.
To break a Waystone, you need a Diamond level or greater pickaxe. (It has Obsidian in it afterall!)
Once an activated Waystone is broken, it drops two items: The Waystone itself, and the Eye of Ender.
I propose this as the Waystone's new crafting recipe:
"Why an Emerald?" you may ask? Because Waystones naturally generate in villages, afterall!
My original idea was to use a Diamond since its colours are visible in the original texture.
But!
After some modifications, I've come up with a new texture:
This texture makes only the front of the Waystone have a hieroglyph, and also changes some other very minor areas.
Here is the file:
Originally, the texture had "Pos1x Was Here" written at the bottom, but I had to erase that because parts of it were appearing in the debris when you were breaking the Waystone:
Here's a list of various visual and technical features what would be pretty cool to have:
So what do you think? Are these good ideas? Would they make for good implementations?
There is a mod in our modpack (caves and cliffs part 2) that increases the world height to the 1.18 values (-64 - 320).
The waystone will not let you place it above the normal 256 block limit. (Nothing happens when placing the block)
I've noticed that with the Fabric Bountiful mod, Bounty-Boards can generate over Village Waystones. While this could be an issue on their end, they had no github to report issues to.
It is also (somewhat) fixed by reducing the spawnrate of Bounty Boards, but it doesn't fix the issue.
[23:44:24] [main/WARN]: Mod waystones
(1.1.1.1) uses more dot-separated version components than SemVer allows; support for this is currently not guaranteed.
I sure you know this but the version number shouldn't have more than two dots.
[23:45:09] [Worker-Main-12/WARN]: Unable to resolve texture reference: #missing in waystones:block/waystone_bottom_active
[23:45:09] [Worker-Main-12/WARN]: Unable to resolve texture reference: #missing in waystones:block/waystone_top_active
A player broke a waystone which crashed the official NA AOF3 server.
(mapped) https://paste.alloffabric.com/situkotezi.yaml
When the server rebooted the player said that half of the waystone is still there, but they're going to leave it alone.
This pops up from time to time, but I keep forgetting to submit and issue.
(relevant to both 1.1.1 and 1.1.0)
After an existing world with Waystones already placed in finishes loading, the game briefly cuts to a black screen before showing a dirt menu screen with the text "Connection Lost" and a "Back to Server List" button that leads to the multiplayer server list menu.
latest.log
(Log, but it might not help much, as this was found during a long session)
When I access a new unclaimed waystone my nonglobal waystones do not show up. Global ones always show up.
Currently, the color of various words/names throughout the mod are preset (Grey title, black XP cost, etc). Enabling the ability to set the color of these in the lang files with color codes (ยงf for white, for example) would allow greater customizability for resource packs attempting to modify the UI - specifically ones aiming for a "dark mode" of sorts.
Pastebin above. Sorry I don't have much information for this one - sent to me by one of my players. Reportedly, using it also doesn't send you to the right waypoint - renaming them to one letter fixed the issue? Just regurgitating what my players report.
Version: 2.0.1, mc 1.16.5
Waystone names keep resetting to the default names.
I believe it's happening after the server restarts because the old names are saved on other people's ends and the new names are just not syncing? But I honestly don't know why it keeps happening, just that they just are not sticking.
Levels seem to "reset" when traveling across worlds (eg. overworld to end). The levels don't actually completely reset, but seem to become stagnant and in return, doesn't display a level, thus not allowing you to re-use the waystone until you obtain another orb to have the levels re-appear again.
When I die and one or more Universal Graves exist, holding my items. I can no longer use the way stones. Clicking a way stone will open the interface. But upon selecting a destination, the UI closes, leaving me where I was. Other way stone operations, like breaking, placing, renaming a way stone all work. And I can add new way stones to my network. I just cannot travel via way stone until all my graves are broken. This makes it very difficult to return to my grave!
Hello, I have noticed that sometimes when I place a waystone to a location far away from my minecraft house, then teleport back to home, then teleport back again to the said location and break the waystone, it will not remove the waystone as I still can teleport from it when I use another waystone, even without the waystone placed there.
I've went through waystone a few times and every now and then (not always I've seen) the item gets destroyed on teleporting.
I carry food in my offhand just as a convivence measure and just to free up space in inventory. Countless times i've lost stacks of golden carrots, sometimes torches if that's in the offhand also.
(NOTE: I'm playing a modpack where this mod is added "Better Minecraft [FABRIC]")
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.