Skip to content

Commit

Permalink
Vanish players don't obstruct block placement
Browse files Browse the repository at this point in the history
fixes #40
  • Loading branch information
DrexHD committed May 31, 2024
1 parent a5fbf3c commit a012447
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 2 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [1.5.5] - 2024-05-31
### Added
- Vanished players don't obstruct block placement

## [1.5.4] - 2024-04-24
### Fixed
- Crash on startup
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
- You are removed from command selectors (`/msg`, `/gamemode`...)
- You get removed from `/list` command
- You don't appear in the server list player sample and player count
- You don't obstruct block placement
- Your advancement, death, join/leave messages, and others are hidden
- Fake join/leave messages are sent on vanish/un-vanish
- Hide from entities
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ org.gradle.jvmargs=-Xmx1G
minecraft_version=1.20.5
loader_version=0.15.10
# Mod Properties
mod_version=1.5.4
mod_version=1.5.5
maven_group=me.drex
archives_base_name=vanish
# Dependencies
Expand Down
29 changes: 29 additions & 0 deletions src/main/java/me/drex/vanish/mixin/EntityGetterMixin.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package me.drex.vanish.mixin;

import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import me.drex.vanish.api.VanishAPI;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.level.EntityGetter;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;

@Mixin(EntityGetter.class)
public interface EntityGetterMixin {

@WrapOperation(
method = "isUnobstructed",
at = @At(
value = "FIELD",
target = "Lnet/minecraft/world/entity/Entity;blocksBuilding:Z"
)
)
default boolean vanish_noBlockObstruction(Entity entity, Operation<Boolean> original) {
if (entity instanceof ServerPlayer serverPlayer && VanishAPI.isVanished(serverPlayer)) {
return false;
}
return original.call(entity);
}

}
3 changes: 2 additions & 1 deletion src/main/resources/vanish.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
"mixins": [
"CommandSourceStackMixin",
"ContainerMixin",
"EntityGetterMixin",
"EntityMixin",
"EntitySelectorMixin",
"ListPlayersCommandMixin",
Expand All @@ -27,11 +28,11 @@
"SleepStatusMixin",
"VanishedServerPlayerMixin",
"WardenMixin",
"interaction.BadOmenMobEffectMixin",
"interaction.ChunkMapMixin",
"interaction.FallOnBlockMixin",
"interaction.InsideBlockMixin",
"interaction.LivingEntityMixin",
"interaction.BadOmenMobEffectMixin",
"interaction.PlayerMixin",
"interaction.StepOnBlockMixin",
"interaction.VanishEntitySelector$AbstractMinecartMixin",
Expand Down

0 comments on commit a012447

Please sign in to comment.