Skip to content

Commit

Permalink
Merge pull request #22 from Blukzen/feature/13-disabled-items
Browse files Browse the repository at this point in the history
feature/13: Lab disabled items configuration
  • Loading branch information
brukzen authored Apr 19, 2022
2 parents 8a0115b + 2870eaf commit f5399d4
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/main/java/com/blukzen/createlab/CreateLabConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ public class CreateLabConfig {
public static final ForgeConfigSpec COMMON_SPEC;

public static ForgeConfigSpec.ConfigValue<List<? extends String>> labPortalFrameBlocks;
public static ForgeConfigSpec.ConfigValue<List<? extends String>> disabledItems;
public static ForgeConfigSpec.IntValue tpCommandPermissionLevel;
public static ForgeConfigSpec.IntValue debugCommandPermissionLevel;
public static ForgeConfigSpec.IntValue saveCommandPermissionLevel;
Expand All @@ -21,6 +22,7 @@ public class CreateLabConfig {

private static void setupConfig(ForgeConfigSpec.Builder builder) {
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);
disabledItems = builder.comment("Blocks and items that are disabled in the laboratory dimension").defineList("disabled_items", Arrays.asList("minecraft:ender_chest"), entry -> true);

builder.push("Command Permission Levels");
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,34 @@
package com.blukzen.createlab.mixin;

import com.blukzen.createlab.CreateLabConfig;
import com.blukzen.createlab.dimension.LabDimensions;
import com.mojang.authlib.GameProfile;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

import java.util.function.Predicate;

@Mixin(ServerPlayerEntity.class)
public abstract class ServerPlayerEntityMixin extends PlayerEntity {
Predicate<ItemStack> DISABLED_ITEMS = (ItemStack itemStack) -> CreateLabConfig.disabledItems.get().contains(itemStack.getItem().getRegistryName().toString());

public ServerPlayerEntityMixin(World world, BlockPos pos, float yaw, GameProfile profile) {
super(world, pos, yaw, profile);
}

@Inject(method = "tick", at = @At("HEAD"))
public void tick(CallbackInfo ci) {
if (this.level.dimension().equals(LabDimensions.LABDIM)) {
if (DISABLED_ITEMS.test(getMainHandItem())) {
getMainHandItem().setCount(0);
}
}
}
}

0 comments on commit f5399d4

Please sign in to comment.