Skip to content

Commit f5399d4

Browse files
authored
Merge pull request #22 from Blukzen/feature/13-disabled-items
feature/13: Lab disabled items configuration
2 parents 8a0115b + 2870eaf commit f5399d4

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

src/main/java/com/blukzen/createlab/CreateLabConfig.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ public class CreateLabConfig {
99
public static final ForgeConfigSpec COMMON_SPEC;
1010

1111
public static ForgeConfigSpec.ConfigValue<List<? extends String>> labPortalFrameBlocks;
12+
public static ForgeConfigSpec.ConfigValue<List<? extends String>> disabledItems;
1213
public static ForgeConfigSpec.IntValue tpCommandPermissionLevel;
1314
public static ForgeConfigSpec.IntValue debugCommandPermissionLevel;
1415
public static ForgeConfigSpec.IntValue saveCommandPermissionLevel;
@@ -21,6 +22,7 @@ public class CreateLabConfig {
2122

2223
private static void setupConfig(ForgeConfigSpec.Builder builder) {
2324
labPortalFrameBlocks = builder.comment("Blocks that can be used as a lab portal frame").defineList("lab_portal_frame_blocks", Arrays.asList("minecraft:smooth_quartz", "minecraft:quartz_block"), entry -> true);
25+
disabledItems = builder.comment("Blocks and items that are disabled in the laboratory dimension").defineList("disabled_items", Arrays.asList("minecraft:ender_chest"), entry -> true);
2426

2527
builder.push("Command Permission Levels");
2628
{
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,34 @@
11
package com.blukzen.createlab.mixin;
22

3+
import com.blukzen.createlab.CreateLabConfig;
4+
import com.blukzen.createlab.dimension.LabDimensions;
35
import com.mojang.authlib.GameProfile;
46
import net.minecraft.entity.player.PlayerEntity;
57
import net.minecraft.entity.player.ServerPlayerEntity;
8+
import net.minecraft.item.ItemStack;
69
import net.minecraft.util.math.BlockPos;
710
import net.minecraft.world.World;
811
import org.spongepowered.asm.mixin.Mixin;
12+
import org.spongepowered.asm.mixin.injection.At;
13+
import org.spongepowered.asm.mixin.injection.Inject;
14+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
15+
16+
import java.util.function.Predicate;
917

1018
@Mixin(ServerPlayerEntity.class)
1119
public abstract class ServerPlayerEntityMixin extends PlayerEntity {
20+
Predicate<ItemStack> DISABLED_ITEMS = (ItemStack itemStack) -> CreateLabConfig.disabledItems.get().contains(itemStack.getItem().getRegistryName().toString());
21+
1222
public ServerPlayerEntityMixin(World world, BlockPos pos, float yaw, GameProfile profile) {
1323
super(world, pos, yaw, profile);
1424
}
25+
26+
@Inject(method = "tick", at = @At("HEAD"))
27+
public void tick(CallbackInfo ci) {
28+
if (this.level.dimension().equals(LabDimensions.LABDIM)) {
29+
if (DISABLED_ITEMS.test(getMainHandItem())) {
30+
getMainHandItem().setCount(0);
31+
}
32+
}
33+
}
1534
}

0 commit comments

Comments
 (0)