package carpet.utils; import carpet.settings.CarpetSettings; import carpet.helpers.HopperCounter; import net.minecraft.block.Material; import net.minecraft.block.MaterialColor; import net.minecraft.block.BlockState; import net.minecraft.server.command.ServerCommandSource; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.DyeColor; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraft.text.BaseText; import net.minecraft.world.World; import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class WoolTool { private static final HashMap Material2Dye = new HashMap<>(); static { for (DyeColor color: DyeColor.values()) { Material2Dye.put(color.getMaterialColor(),color); } } public static void carpetPlacedAction(DyeColor color, PlayerEntity placer, BlockPos pos, ServerWorld worldIn) { if (!CarpetSettings.carpets) { return; } switch (color) { case PINK: if (CarpetSettings.commandSpawn) Messenger.send(placer, SpawnReporter.report(pos, worldIn)); break; case BLACK: if (CarpetSettings.commandSpawn) Messenger.send(placer, SpawnReporter.show_mobcaps(pos, worldIn)); break; case BROWN: if (CarpetSettings.commandDistance) { ServerCommandSource source = placer.getCommandSource(); if (!DistanceCalculator.hasStartingPoint(source) || placer.isSneaking()) { DistanceCalculator.setStart(source, new Vec3d(pos)); } else { DistanceCalculator.setEnd(source, new Vec3d(pos)); } } break; case GRAY: if (CarpetSettings.commandInfo) Messenger.send(placer, BlockInfo.blockInfo(pos.method_10074(), worldIn)); break; case YELLOW: if (CarpetSettings.commandInfo) Messenger.m(placer, "r This used to show entity info around the player. Use data get entity command, sorry"); //EntityInfo.issue_entity_info(placer); break; case GREEN: if (CarpetSettings.hopperCounters) { DyeColor under = getWoolColorAtPosition(worldIn, pos.method_10074()); if (under == null) return; HopperCounter counter = HopperCounter.getCounter(under.toString()); if (counter != null) Messenger.send(placer, counter.format(worldIn.getServer(), false, false)); } break; case RED: if (CarpetSettings.hopperCounters) { DyeColor under = getWoolColorAtPosition(worldIn, pos.method_10074()); if (under == null) return; HopperCounter counter = HopperCounter.getCounter(under.toString()); if (counter == null) return; counter.reset(placer.getServer()); List res = new ArrayList<>(); res.add(Messenger.s(String.format("%s counter reset",under.toString()))); Messenger.send(placer, res); } break; } } public static DyeColor getWoolColorAtPosition(World worldIn, BlockPos pos) { BlockState state = worldIn.getBlockState(pos); if (state.getMaterial() != Material.WOOL || !state.isSimpleFullBlock(worldIn, pos)) return null; return Material2Dye.get(state.getTopMaterialColor(worldIn, pos)); } }