Git Product home page Git Product logo

fabricwaystones's Introduction

fabricwaystones's People

Contributors

asceth avatar cmdrjane avatar devan-kerman avatar elbakramer avatar focamacho avatar fourmisain avatar gliscowo avatar gniftygnome avatar guilhermeluciano3 avatar gyular avatar i509vcb avatar johnhoffm avatar jordansekky avatar k0-rr avatar littlepianist avatar lorddeathunter avatar mysticdrew avatar nimbxnumb avatar nitjsefnie avatar pexpe3 avatar portablegames avatar rawpineapple avatar rokoblox avatar samekichi avatar settingdust avatar slarper avatar telepathicgrunt avatar theanaxman avatar triphora avatar xpand4b 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

Watchers

 avatar  avatar

fabricwaystones's Issues

NullPointerException when joining single-player world

Hi! I really like your take on waypoints. Unfortunately something is wrong with the last two versions...

Observation

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.)

Setup

  • Minecraft 1.16.4
  • Fabric Loader 0.10.8
  • Fabric API 0.29.1+1.16
  • Wrath Waystones 1.1.0

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.

Speculation

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

[Feature Requests] Channels / Networks

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.

[Bug] Local Void Not Working

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!

[Bug Report] several GUI issues

1: Waystone GUI alignment issue

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.
Screenshot_1

2: Text input 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.

Dupe waystones

If you place down a waystone and brake it with a hammer that mines 3x by 3x it dupes the waystone.

[1.17.1 ] [waystone v2.0.4] Owner cannot open GUI of 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) [?:?]

[Feature Request] Config options to make escaping danger harder

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.

[BUG] Wraith Waystones Corrupt Campanion Tents

Is this a modpack or mod issue?
(if something is screwy using a certain mod, then send the bug to the mod dev first.)

  • Mod Suspected - Campanion Tents seemed to work well until paired with Wraith Waystones

PLEASE MENTION IF YOU ADDED ANY MODS.. ESPECIALLY SODIUM, IF YOU DON'T, IT MAKES US VERY GRUMPY

  • None

Modpack Version
(any bugs using a non-up-to-date version will be asked to replicate with the most up-to-date release)

  • All of Fabric 3 v2.8.5

Describe the bug
A clear and concise description of what the bug is.

  • Picking up a Campanion Tent with a Campanion Tent Bag, while a Wraith Waystone is within or within range of the tent, corrupts the partial Tent with the following error:
[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:

  • Place a Wraith 1.1.1.1 Waystone in range or within a Campanion 1.3.5 Tent.
  • Pick up the tent with the Campanion 1.3.5 Tent Bag.
  • Observe error in server log.
  • Observe the Campanion 1.3.5 Tent corrupted, with Wraith 1.1.1.1 Waystone remaining.
  • Observe the Campanion 1.3.5 Tent Bag ghost corrupted.

Expected behavior
A clear and concise description of what you expected to happen.

  • Place a Wraith 1.1.1.1 Waystone in range or within a Campanion 1.3.5 Tent.
  • Pick up the tent with the Campanion 1.3.5 Tent Bag.
  • The Wraith 1.1.1.1 Waystone is added to the Campanion 1.3.5 Tent.
  • The Wraith 1.1.1.1 Waystone updates its location to wherever the Campanion 1.3.5 Tent is placed.

Screenshots
If applicable, add screenshots to help explain your problem.

  • N/A

Logs
(you can use https://paste.alloffabric.com)

  • N/A

Additional context
Add any other context about the problem here.

  • N/A

Let me know if further info is needed - Thanks!

Waystone crashes villages if the second or third waystone is at end of village pieces.

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.
image

After some debugging, we got a list of mods that mixin into that class.
image

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.

for(int remove : toRemove) {
structures.getChildren().remove(remove);
}

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.

Crash on startup with version 2.2.0

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)

Chunks Not Loading on Teleport

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.

Client network handling is abusing Fabric API impl details

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.

[Feature request]: Allow teleportation to cost hunger

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,

  1. Due to the vanilla exhaustion cap of 40, if your hunger plus your saturation exceeds 10, teleportation always succeeds.
  2. Else, it checks to see if the following condition is satisfied: Food + Sat - Exh/4 >= Cost
    Where, Food is your hunger, Sat is your saturation rounded up, Exh is your exhaustion, Cost is the hunger cost.
  3. If teleportation succeeds, it runs player.getHungerManager().addExhaustion(4 * Cost) to deduct the food stats.

Possible use cases:

  • You want teleportation to cost something, but it can't be an item and you don't feel like taking away their health or hard-earned experience.
  • You want to make sure that players must be able to sprint in order to teleport. (Teleport cost: 7 food points)

[Bug] Revoking ownership will crash when pressing save

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:

UUID owner = ((WaystoneScreenHandler)handler).getOwner();
if (name == null) {
name = "";
}
((WaystoneScreenHandler)handler).setName(name);
PacketByteBuf data = new PacketByteBuf(Unpooled.buffer());
NbtCompound tag = new NbtCompound();
tag.putString("waystone_name", name);
tag.putString("waystone_hash", hash);
tag.putUuid("waystone_owner", owner);

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.

Can't use controller to scroll

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.

Feature Request: Allow Removal of Waystones from a players 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:

  • could provide a button or key combo in the UI to let the player manually clean up entries they do not want in the waystone list. This might by handy in case a person wants to remove a Waystone from their own list without breaking the actual block.
  • could try to remove a waystone from all player lists when the block is broken. This might present challenges for example with players on servers that are logged off. I don't know.
  • some other fancy solution I hadn't thought of :)

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

Waystone Scrolls Overriding Waystones?

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?

Waystones getting mixed up with oneanother or resetting

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.

Update to Gradle 7

(and Loom to the 0.7 snapshot) to be able to build with Java 16.

This example is from the Dehydration mod

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

[Feature Requests] Several ideas possibly worth implementing!

After some careful thought, I've accumulated several ideas for Waystones that might be worth implementing.
They are as follows...

1: Functionality

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.

2: Crafting Recipe

I propose this as the Waystone's new crafting recipe:

Screenshot_4

"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!

3: Texture

After some modifications, I've come up with a new texture:

2020-10-08_23 11 38

This texture makes only the front of the Waystone have a hieroglyph, and also changes some other very minor areas.
Here is the file:

waystone
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:
2020-10-08_21 29 54

4: Features

Here's a list of various visual and technical features what would be pretty cool to have:

  • Have the Eye of Ender turn to "stare" at player who approaches (like Enchanting Table books)
  • Make the Eye of Ender have small purple particles absorbing into it (like Ender Chests)
  • Make purple particles appear and dissipate around player when they teleport (like Endermen)
  • Replace the inventory texture with block model instead (like regular blocks)

So what do you think? Are these good ideas? Would they make for good implementations?

[Mod Compatability Issue] Bountiful

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.

Fix versioning + console spam?

[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.

Unable to resolve texture reference.

[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

"Connection lost" upon loading singleplayer world with existing Waystones.

(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.

Nonglobal waystones disappearing.

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.

[Feature Request] Enable color codes in lang files

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.

Crash Upon Use

https://pastebin.com/J85D6nZj

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.

[Bug] Names Keep Resetting [Multiplayer]

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.

[Bug Report] Levels disappearing when travelling between worlds.

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.

Compatibility issue Universal Graves?

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!

[BUG REPORT] Waystone is still active even though it is broken.

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.

[Bug] Offhand Items Despawning on teleport

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]")

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.