林黛玉ww
本帖最后由 林黛玉ww 于 2022-7-13 02:10 编辑

SlimeFunFixer

粘液科技修复

基于 远古工艺4.1.15版本修复



修 复 内 容

1.远古祭坛刷物品 (这个我不敢保证100%修好,)

2.坩埚破坏上方方块

3.运输系统无限刷取经验

另外,增加“全息投影仪”的“是否允许放置”开关



配置文件
  1. <blockquote>
复制代码
服了,代码老被吞,直接放出来...
HologramProjector_Enable: false
# 禁止放置全息投影仪 true为禁止
HologramProjectorMessage_Enable: false
HologramProjectorMessage: "§8§l[§c§l!§8§l] §4警告 §f§l> §c当前物品已被禁止放置!"

CrucibleFix_Enable: false
# 禁止直接在方块下面放置坩埚 true为禁止
CrucibleMessage_Enable: false
CrucibleMessage: "§8§l[§c§l!§8§l] §4警告 §f§l> §c若要在此处放置坩埚,请先移除上放方块!"

Cargo_Enable: true
# 修复运输系统刷经验bug true为开启

Ancient_Enable: true
# 修复远古祭坛bug true为开启
Ancient_Message1_Title: "§c§l?"
Ancient_Message1_SubTitle: "§e祭坛还没有反应过来呢..."
Ancient_Message1_Message: "§8§l[§a§l!§8§l] §b系统 §f§l> §7远古祭坛貌似还没反应过来...一会儿再试试吧"
Ancient_Message2_Title: "§c§l?"
Ancient_Message2_SubTitle: "§7拆除失败,请再试一次"
Ancient_Message2_Message: "§8§l[§a§l!§8§l] §b系统 §f§l> §7远古祭坛貌似还没反应过来...一会儿再试试吧"
Ancient_Message3_Title: "§c§l?"
Ancient_Message3_SubTitle: "§7远古祭坛留下的神秘的气息使你现在不能在这放置方块"
Ancient_Message3_Message: "§8§l[§a§l!§8§l] §b系统 §f§l> §7远古祭坛留下的神秘的气息使你现在不能在这放置方块"

Version: 2
# 这个不要动





源码
(插件赶制的,代码比较乱= =)



下载

SlimeFunFixer.jar (6.55 KB, 下载次数: 839)

前置 TitleAPI: 点击

(其他bug修复请跳转至这个帖子)

本插件所用代码部分来自其他开源或闭源(已授权)作品

本插件为非盈利性插件,免费发布,严禁销售和转卖
最后,给个金粒或者人气好不~



2021.12 数据,可能有更多内容SlimeFunFixer
粘液科技修复
基于 远古工艺4.1.15版本修复


修复内容
1.远古祭坛刷物品 (这个我不敢保证100%修好,)
2.坩埚破坏上方方块
3.运输系统无限刷取经验
另外,增加“全息投影仪”的“是否允许放置”开关


配置文件

代码:

  1. <blockquote>
服了,代码老被吞,直接放出来...HologramProjector_Enable: false
# 禁止放置全息投影仪 true为禁止
HologramProjectorMessage_Enable: false
HologramProjectorMessage: &quot;§8§l[§c§l!§8§l] §4警告 §f§l&gt; §c当前物品已被禁止放置!&quot;


CrucibleFix_Enable: false
# 禁止直接在方块下面放置坩埚 true为禁止
CrucibleMessage_Enable: false
CrucibleMessage: &quot;§8§l[§c§l!§8§l] §4警告 §f§l&gt; §c若要在此处放置坩埚,请先移除上放方块!&quot;


Cargo_Enable: true
# 修复运输系统刷经验bug true为开启


Ancient_Enable: true
# 修复远古祭坛bug true为开启
Ancient_Message1_Title: &quot;§c§l?&quot;
Ancient_Message1_SubTitle: &quot;§e祭坛还没有反应过来呢...&quot;
Ancient_Message1_Message: &quot;§8§l[§a§l!§8§l] §b系统 §f§l&gt; §7远古祭坛貌似还没反应过来...一会儿再试试吧&quot;
Ancient_Message2_Title: &quot;§c§l?&quot;
Ancient_Message2_SubTitle: &quot;§7拆除失败,请再试一次&quot;
Ancient_Message2_Message: &quot;§8§l[§a§l!§8§l] §b系统 §f§l&gt; §7远古祭坛貌似还没反应过来...一会儿再试试吧&quot;
Ancient_Message3_Title: &quot;§c§l?&quot;
Ancient_Message3_SubTitle: &quot;§7远古祭坛留下的神秘的气息使你现在不能在这放置方块&quot;
Ancient_Message3_Message: &quot;§8§l[§a§l!§8§l] §b系统 §f§l&gt; §7远古祭坛留下的神秘的气息使你现在不能在这放置方块&quot;


Version: 2
# 这个不要动



源码
(插件赶制的,代码比较乱= =)

代码:

  1. package com.q168;

代码:

  1. package com.q168;

  2. import org.bukkit.Bukkit;
  3. import org.bukkit.Location;
  4. import org.bukkit.Material;
  5. import org.bukkit.block.Block;
  6. import org.bukkit.command.Command;
  7. import org.bukkit.command.CommandExecutor;
  8. import org.bukkit.command.CommandSender;
  9. import org.bukkit.entity.Player;
  10. import org.bukkit.event.EventHandler;
  11. import org.bukkit.event.Listener;
  12. import org.bukkit.event.block.Action;
  13. import org.bukkit.event.block.BlockBreakEvent;
  14. import org.bukkit.event.block.BlockPlaceEvent;
  15. import org.bukkit.event.inventory.FurnaceExtractEvent;
  16. import org.bukkit.event.player.PlayerInteractEvent;
  17. import org.bukkit.inventory.ItemStack;
  18. import org.bukkit.plugin.java.JavaPlugin;

  19. import com.connorlinfoot.titleapi.TitleAPI;

  20. import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
  21. import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
  22. import me.mrCookieSlime.Slimefun.api.BlockStorage;

  23. import java.util.HashMap;
  24. import java.util.logging.Level;


  25. public class Main extends JavaPlugin implements CommandExecutor, Listener {

  26.     public boolean HologramProjector_Enable;
  27.     public boolean HologramProjectorMessage_Enable;
  28.     public String HologramProjectorMessage;
  29.     public boolean CrucibleFix_Enable;
  30.     public boolean CrucibleMessage_Enable;
  31.     public String CrucibleMessage;
  32.     public boolean Cargo_Enable;   
  33.     public boolean Ancient_Enable;
  34.     public String Ancient_Message1_Title;
  35.     public String Ancient_Message1_SubTitle;
  36.     public String Ancient_Message1_Message;
  37.     public String Ancient_Message2_Title;
  38.     public String Ancient_Message2_SubTitle;
  39.     public String Ancient_Message2_Message;
  40.     public String Ancient_Message3_Title;
  41.     public String Ancient_Message3_SubTitle;
  42.     public String Ancient_Message3_Message;
  43.     //
  44.     //
  45.     @Override
  46.     public void onEnable() {
  47.             saveDefaultConfig();
  48.   if(getConfig().getInt("Version")==1){
  49.    getConfig().set("HologramProjector_Enable","false");
  50.    getConfig().set("HologramProjectorMessage_Enable","false");
  51.    getConfig().set("HologramProjectorMessage","§8§l[§c§l!§8§l] §4警告 §f§l> §c当前物品已被禁止放置!");
  52.    getConfig().set("CrucibleFix_Enable","false");
  53.    getConfig().set("CrucibleMessage_Enable","false");
  54.    getConfig().set("CrucibleMessage","§8§l[§c§l!§8§l] §4警告 §f§l> §c若要在此处放置坩埚,请先移除上放方块!");
  55.    getConfig().set("Cargo_Enable","true");
  56.    getConfig().set("Ancient_Enable", "true");
  57.    getConfig().set("Ancient_Message1_Title", "§c§l?");
  58.    getConfig().set("Ancient_Message1_SubTitle", "§e祭坛还没有反应过来呢...");
  59.    getConfig().set("Ancient_Message1_Message", "§8§l[§a§l!§8§l] §b系统 §f§l> §7远古祭坛貌似还没反应过来...一会儿再试试吧");
  60.    getConfig().set("Ancient_Message2_Title", "§c§l?");
  61.    getConfig().set("Ancient_Message2_SubTitle", "§7拆除失败,请再试一次");
  62.    getConfig().set("Ancient_Message2_Message", "§8§l[§a§l!§8§l] §b系统 §f§l> §7远古祭坛貌似还没反应过来...一会儿再试试吧");
  63.    getConfig().set("Ancient_Message3_Title", "§c§l?");
  64.    getConfig().set("Ancient_Message3_SubTitle", "§7远古祭坛留下的神秘的气息使你现在不能在这放置方块");
  65.    getConfig().set("Ancient_Message3_Message", "§8§l[§a§l!§8§l] §b系统 §f§l> §7远古祭坛留下的神秘的气息使你现在不能在这放置方块");
  66.    getConfig().set("Version",2);
  67.    saveConfig();
  68.   }   
  69.   HologramProjector_Enable = getConfig().getBoolean("HologramProjector_Enable");
  70.   HologramProjectorMessage_Enable = getConfig().getBoolean("HologramProjectorMessage_Enable");
  71.   HologramProjectorMessage = getConfig().getString("HologramProjectorMessage").replace("&", "§");
  72.   CrucibleFix_Enable = getConfig().getBoolean("CrucibleFix_Enable");
  73.   CrucibleMessage_Enable = getConfig().getBoolean("CrucibleMessage_Enable");
  74.   CrucibleMessage = getConfig().getString("CrucibleMessage").replace("&", "§");
  75.   Cargo_Enable = getConfig().getBoolean("Cargo_Enable");
  76.   Ancient_Enable = getConfig().getBoolean("Ancient_Enable");
  77.   Ancient_Message1_Title = getConfig().getString("Ancient_Message1_Title").replace("&", "§");
  78.   Ancient_Message1_SubTitle = getConfig().getString("Ancient_Message1_SubTitle").replace("&", "§");
  79.   Ancient_Message1_Message = getConfig().getString("Ancient_Message1_Message").replace("&", "§");
  80.   Ancient_Message2_Title = getConfig().getString("Ancient_Message2_Title").replace("&", "§");
  81.   Ancient_Message2_SubTitle = getConfig().getString("Ancient_Message2_SubTitle").replace("&", "§");
  82.   Ancient_Message2_Message = getConfig().getString("Ancient_Message2_Message").replace("&", "§");

  83.   Ancient_Message3_Title = getConfig().getString("Ancient_Message3_Title").replace("&", "§");
  84.   Ancient_Message3_SubTitle = getConfig().getString("Ancient_Message3_SubTitle").replace("&", "§");
  85.   Ancient_Message3_Message = getConfig().getString("Ancient_Message3_Message").replace("&", "§");

  86.   getLogger().log(Level.INFO,"§aSlimeFunFixer —— 粘液科技bug修复插件已经开启!");
  87.   Bukkit.getPluginManager().registerEvents(this, this);
  88.     }
  89.    
  90.     // 防止坩埚破坏上方方块
  91.         @EventHandler
  92.         public void onP1(BlockPlaceEvent e)
  93.                 {
  94.                 if (CrucibleFix_Enable != true)
  95.                         return;
  96.                         if (e.isCancelled()) {
  97.                                 return;
  98.                         }
  99.                         ItemStack item = e.getItemInHand();
  100.                         if (!SlimefunManager.isItemSimiliar(item, SlimefunItems.CRUCIBLE, true)) {
  101.                                 return;
  102.                         }
  103.                         Block b = e.getBlock();
  104.                         Location loc = b.getLocation();
  105.                         loc.setY(loc.getY() + 1.0D);
  106.                         Block upon = loc.getBlock();
  107.                 if (upon.getType().equals(Material.AIR)) {
  108.                         return;
  109.                         }
  110.                 e.setCancelled(true);
  111.                 if (CrucibleMessage_Enable == true) {
  112.                         e.getPlayer().sendMessage(CrucibleMessage);}
  113.                        
  114.                 }
  115.         @EventHandler
  116.        public void onOpen(PlayerInteractEvent e)
  117.        {
  118.                 if (Ancient_Enable != true)
  119.                        return;
  120.                if (e.getAction() == Action.RIGHT_CLICK_BLOCK) {
  121.                 Location loc = e.getClickedBlock().getLocation();
  122.                 Player p = e.getPlayer();
  123.                 if (loc == null) {
  124.                         return;
  125.                 }
  126.                 if (p == null) {
  127.                         return;
  128.                 }
  129.                 if (e.getClickedBlock() == null){
  130.                         return;
  131.                 }
  132.       if (e.isCancelled()) {
  133.        return;
  134.         }
  135.                 if (BlockStorage.check(loc, "ANCIENT_PEDESTAL")) {
  136.                
  137.         if ((this.cooldownE.containsKey(loc)) && (((Long)this.cooldownE.get(loc)).longValue() > System.currentTimeMillis()))
  138.         {
  139.        long Long = ((Long)this.cooldownE.get(loc)).longValue() - System.currentTimeMillis();
  140.        int currentTime = (int)Long;
  141.        String time = Integer.toString(currentTime / 1000);
  142.        TitleAPI.sendTitle(e.getPlayer(),0,20,10,Ancient_Message1_Title,Ancient_Message1_SubTitle);
  143.        e.getPlayer().sendMessage(Ancient_Message1_Message);
  144.        e.getPlayer().playSound(e.getPlayer().getLocation(), "block.anvil.land", 1.0F, 1.0F);
  145.        e.setCancelled(true);
  146.        p.updateInventory();
  147.         }
  148.         else
  149.         {
  150.        this.cooldownE.put(loc, Long.valueOf(System.currentTimeMillis() + 2 * 1000));
  151.         }
  152.                 }
  153.        }
  154.         }
  155.        @EventHandler
  156.        public void onBreak(BlockBreakEvent e)
  157.        {
  158.                if (Ancient_Enable != true)
  159.                        return;
  160.                Location loc = e.getBlock().getLocation();
  161.                if (BlockStorage.check(loc, "ANCIENT_PEDESTAL")) {
  162.                 if ((this.cooldownE.containsKey(loc)) && (((Long)this.cooldownE.get(loc)).longValue() > System.currentTimeMillis()))
  163.                 {
  164.                long Long = ((Long)this.cooldownE.get(loc)).longValue() - System.currentTimeMillis();
  165.                int currentTime = (int)Long;
  166.                String time = Integer.toString(currentTime / 1000);
  167.                TitleAPI.sendTitle(e.getPlayer(),0,20,10,Ancient_Message2_Title,Ancient_Message2_SubTitle);
  168.                e.getPlayer().sendMessage(Ancient_Message2_Message);
  169.                e.getPlayer().playSound(e.getPlayer().getLocation(), "block.anvil.land", 1.0F, 1.0F);
  170.                e.setCancelled(true);
  171.                e.getPlayer().updateInventory();
  172.                 }
  173.                 else
  174.                 {
  175.                this.cooldownE.put(loc, Long.valueOf(System.currentTimeMillis() + 2 * 1000));
  176.                 }
  177.                        
  178.                }
  179.        }
  180.        private HashMap<Location, Long> cooldownE = new HashMap();

  181.        @EventHandler
  182.        public void onPlace(BlockPlaceEvent e)
  183.        {
  184.                if (Ancient_Enable != true)
  185.                return;
  186.               if (e.isCancelled()) {
  187.                return;
  188.                 }
  189.                Location loc = e.getBlock().getLocation();
  190.                if (BlockStorage.check(loc, "ANCIENT_PEDESTAL")) {
  191.                 if ((this.cooldownE.containsKey(loc)) && (((Long)this.cooldownE.get(loc)).longValue() > System.currentTimeMillis()))
  192.                 {
  193.                long Long = ((Long)this.cooldownE.get(loc)).longValue() - System.currentTimeMillis();
  194.                int currentTime = (int)Long;
  195.                String time = Integer.toString(currentTime / 1000);
  196.                TitleAPI.sendTitle(e.getPlayer(),0,20,10,Ancient_Message3_Title,Ancient_Message3_SubTitle);
  197.                e.getPlayer().sendMessage(Ancient_Message3_Message);
  198.                e.getPlayer().playSound(e.getPlayer().getLocation(), "block.anvil.land", 1.0F, 1.0F);
  199.                e.setCancelled(true);
  200.                e.getPlayer().updateInventory();
  201.                 }
  202.                 else
  203.                 {
  204.                
  205.                 }
  206.                        
  207.                }
  208.        }
  209.     @EventHandler
  210.     public void onPlace2(BlockPlaceEvent e)
  211.     {
  212.    if (HologramProjector_Enable != true)
  213.            return;
  214.    if (e.isCancelled()) {
  215.            return;
  216.    }
  217.    ItemStack item = e.getItemInHand();
  218.    if (!SlimefunManager.isItemSimiliar(item, SlimefunItems.HOLOGRAM_PROJECTOR, true)) {
  219.     return;
  220.   }
  221.    e.setCancelled(true);
  222.    if (HologramProjectorMessage_Enable == true) {
  223.            e.getPlayer().sendMessage(HologramProjectorMessage);
  224.    }
  225.     }
  226.    
  227.     @Override
  228.     public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {

  229.             if(command.getName().equalsIgnoreCase("sff")){
  230.                     sender.sendMessage("");
  231.                     sender.sendMessage("§b§lSlimeFunFixer v1 §3§lby §f§nwww.mcbbbs.net§r§6§l@§a§lAnju!!!");
  232.                     }
  233.      return true;
  234.      }
  235.    
  236.     // 修复运输系统刷经验
  237.     @EventHandler
  238.     public void onInteract(FurnaceExtractEvent e)
  239.     {
  240.             if (Cargo_Enable != true)
  241.                     return;
  242.            
  243.             Block block = e.getBlock();
  244.             Location loc1 = block.getLocation();
  245.             Location loc2 = block.getLocation();
  246.             Location loc3 = block.getLocation();
  247.             Location loc4 = block.getLocation();
  248.             loc1.setX(loc1.getX() + 1.0D);
  249.             loc2.setX(loc2.getX() - 1.0D);
  250.             loc3.setZ(loc3.getZ() + 1.0D);
  251.             loc4.setZ(loc4.getZ() - 1.0D);
  252.             if ((BlockStorage.check(loc1, "CARGO_NODE_INPUT"))
  253.                     ||(BlockStorage.check(loc2, "CARGO_NODE_INPUT"))
  254.                     ||(BlockStorage.check(loc3, "CARGO_NODE_INPUT"))
  255.                     ||(BlockStorage.check(loc4, "CARGO_NODE_INPUT"))
  256.                     ||(BlockStorage.check(loc1, "CARGO_NODE_OUTPUT"))
  257.                     ||(BlockStorage.check(loc2, "CARGO_NODE_OUTPUT"))
  258.                     ||(BlockStorage.check(loc3, "CARGO_NODE_OUTPUT"))
  259.                     ||(BlockStorage.check(loc4, "CARGO_NODE_OUTPUT"))
  260.                     ||(BlockStorage.check(loc1, "CARGO_NODE"))
  261.                     ||(BlockStorage.check(loc2, "CARGO_NODE"))
  262.                     ||(BlockStorage.check(loc3, "CARGO_NODE"))
  263.                     ||(BlockStorage.check(loc4, "CARGO_NODE"))
  264.                     ||(BlockStorage.check(loc1, "CARGO_NODE_INPUT_ADVANCED"))
  265.                     ||(BlockStorage.check(loc2, "CARGO_NODE_INPUT_ADVANCED"))
  266.                     ||(BlockStorage.check(loc3, "CARGO_NODE_INPUT_ADVANCED"))
  267.                     ||(BlockStorage.check(loc4, "CARGO_NODE_INPUT_ADVANCED"))) {
  268.                    
  269.                   e.setExpToDrop(0);
  270.                   return;
  271.             }
  272.       }
  273.     @Override
  274.     public void onDisable() {
  275.             getLogger().log(Level.INFO,"§cSlimeFunFixer —— 插件关闭,感谢您的使用!");
  276.             }
  277.     }





下载

前置 TitleAPI: 点击
(其他bug修复请跳转至这个帖子)
本插件所用代码部分来自其他开源或闭源(已授权)作品
本插件为非盈利性插件,免费发布,严禁销售和转卖最后,给个金粒或者人气好不~



25454J
就。自动附魔台打开变成普通附魔台是什么情况

飞皇之圣
另外有两个粘液科技的bug不知道能否修复?
1.粘液科技背包卡服的bug,如果玩家拥有多个大背包,而且背包内塞满各种物品,那么当这个玩家打开粘液科技书时会导致服务器卡顿,且当玩家背包内物品越多,这个卡服时间越长,主要原因是玩家背包内物品数据是储存在data-storage/Slimefun/Players下的玩家文档中,这个文档同时保存了玩家已经解锁科技的数据,每当玩家打开粘液科技书时,粘液科技插件都会读取一次玩家的这个文档,当这个文档越大,读取时间越长,所以为什么粘液科技背包里东西越多,越会在打开粘液科技书时卡服了
2.电容器bug,当玩家放下一个粘液科技电容器后,过一段时间如果将其拆除,之后再放上其他粘液科技物品,那么有一定概率会导致新放上的物品在区块被重新加载(或者是重启服务器)后变成普通方块,个人推测是因为电容器通电后,根据所带的电量,会自动变化方块颜色导致的,总之很多玩家的粘液科技物品坏掉都是这个情况导致的

最后感谢楼主的插件,非常强大

cesuo11
支持一下支持一下

BLank826
MCBBS有你更精彩~

shiyukai
挺有用的,支持作者

zhengxinrui
老哥厉害了

小张up
飞皇之圣 发表于 2020-4-29 15:24
另外有两个粘液科技的bug不知道能否修复?
1.粘液科技背包卡服的bug,如果玩家拥有多个大背包,而且背包内 ...

第一个已经有插件修复了
叫safeback什么什么的,就在站内

任性oo
话说可以用来做单机mod 吗

Emoji-W
感谢大佬分享

Chinabc
爆炸稿可以炸领地咋办

安夜生
感谢分享感谢分享!!!!!

zhaomiaomiao
我到现在不知道咋给金粒。。。

we8855
Chinabc 发表于 2021-1-21 10:50
爆炸稿可以炸领地咋办

禁用呗,除了这个没别的好方法

279478620
终于找到这插件了顶一下

HaPi_r
感谢分享

CC_jun
感谢大佬 爱了爱了

APO123
        Ssssssssssssssssssss

wushiyuan
很棒的作品

我真护啊
MCBBS有你更精彩

swdddp

很好用的插件.赞

是j12啊
作者6啊

末愁
看的出来很用心做 给你点赞

尘萧丶SM
感谢大佬分享,拿走了

2754871407
11111111111111111111111111111111

a2661149033

太棒了!!!!

咸鱼下饭王
我不知道为什么我的粘液科技插件没有远古祭坛用这个插件能不能修复

维她柠檬柠檬
非常好的插件

zmp20022
报错怎么回事

身心不健康
牛逼牛逼强大的插件

133a95
感谢分享,也感谢原作者,非常好用

761524
支持作者,感谢作者分享

康纳我男神
MCBBC有你更精彩~