importPackage(Packages.jp.ngt.ngtlib.util); importPackage(Packages.jp.ngt.rtm.entity.train.util); importPackage(Packages.org.lwjgl.input); importPackage(Packages.jp.ngt.rtm); importPackage(Packages.net.minecraft.util); importPackage(Packages.net.minecraft.tileentity); var limit15 = "apple.limit_15"; var limit30 = "apple.limit_30"; var limit45 = "apple.limit_45"; var limit60 = "apple.limit_60"; var limit75 = "apple.limit_75"; var limit80 = "apple.limit_80"; var limitx = "apple.limit_x"; var Json = {}; function onUpdate(entity, scriptExecuter) { Command_Sound(entity); } function Command_Sound(entity) { var commandBlock = searchCommandBlock(entity); if (commandBlock == null) { Json[entity.func_145782_y()] = null; return; } var command = commandBlock.read(); if (!command || command.trim() === "") return; var json = null; try { json = JSON.parse(command.trim()); } catch (e) { return; } var id = entity.func_145782_y(); var prev = Json[id]; if (JSON.stringify(json) !== prev) { var sound = null; if (json.limit) { var l = json.limit.toString(); if (l === "15") sound = limit15; else if (l === "30") sound = limit30; else if (l === "45") sound = limit45; else if (l === "60") sound = limit60; else if (l === "75") sound = limit75; else if (l === "80") sound = limit80; else if (l === "x" || l === "解除") sound = limitx; } Json[id] = JSON.stringify(json); } } function searchCommandBlock(entity) { if (entity === null) return null; var x = Math.floor(entity.posX); var y = Math.floor(entity.posY); var z = Math.floor(entity.posZ); var world = entity.worldObj; var searchMaxCount = 32; for (var i = 1; i <= searchMaxCount; i++) { var manager = new CommandBlockManager(world, x, y - i, z); if (manager.Exists()) { return manager; } } return null; } function CommandBlockManager(world, x, y, z) { this.read = function () { return commandBlockLogic != null ? commandBlockLogic.func_145753_i() : null; }; this.write = function (str) { if (commandBlockLogic == null) return; commandBlockLogic.func_145752_a(str); tileEntity.func_70296_d(); }; this.Exists = function () { return commandBlockLogic != null; }; if (!(this instanceof CommandBlockManager)) { return new CommandBlockManager(world, x, y, z); } var tileEntity = world.getTileEntity(x, y, z); if (tileEntity instanceof TileEntityCommandBlock) { var commandBlockLogic = tileEntity.func_145993_a(); } }