GoldenPotato137 / OxygenSystem

Introduce oxygen to Minecraft!
Apache License 2.0
4 stars 4 forks source link

阻止玩家的一些离谱操作 #1

Closed heartalborada-del closed 2 years ago

heartalborada-del commented 2 years ago

添加了一些事件监听:

GoldenPotato137 commented 2 years ago

我的超人!肥肠感谢您的贡献,我明早会仔细康康的(现在在补下午没做出来的题(悲)

heartalborada-del commented 2 years ago

我的超人!肥肠感谢您的贡献,我明早会仔细康康的(现在在补下午没做出来的题(悲)

好的 我在我服务器上面没测试出有啥bug,不知道还有没有其他的问题

GoldenPotato137 commented 2 years ago

嘛,我当时把喝氧气罐做成手动使用氧气罐了(什么神秘行为) 具体在PlayerInteractListener的最下面 OnPlayerConsume

heartalborada-del commented 2 years ago

草,突然发现没阻止玩家喝氧气罐

嘛,我当时把喝氧气罐做成手动使用氧气罐了(什么神秘行为) 具体在PlayerInteractListener的最下面 OnPlayerConsume

我以为会至少返回个空的氧气罐

GoldenPotato137 commented 2 years ago

最后加的功能,当时想着氧气罐成本低,谁往背包塞一大堆不可堆叠的东西啊(暴论),所以就没有写返空氧气罐的功能。当然,如果加上确实合理很多(

heartalborada-del commented 2 years ago

image 我服玩家的评论(无恶意

GoldenPotato137 commented 2 years ago

草,过于合理( 可能还是加上返回空的氧气罐会比较好,那我明天测试的时候把返回一起写上吧((当然如果您直接一起写上就更好了)(什么暴论))

heartalborada-del commented 2 years ago

草,过于合理( 可能还是加上返回空的氧气罐会比较好,那我明天测试的时候把返回一起写上吧((当然如果您直接一起写上就更好了)(什么暴论))

已经写好了(

GoldenPotato137 commented 2 years ago

我的超人!

heartalborada-del commented 2 years ago

草,刚刚发现个bug,我直接把合成出的物品也阻止了,修了

heartalborada-del commented 2 years ago

问下大佬,请问下氧气值是咋加减的,我看了源码还不是很清楚 (看下能不能帮您把这个实现了) image

GoldenPotato137 commented 2 years ago

问下大佬,请问下氧气值是咋加减的,我看了源码还不是很清楚 (看下能不能帮您把这个实现了) image

调用OxygenCalculatorSetOxygen函数

public static boolean SetOxygen(Player player, int delta)

delta是氧气增量,大于0表示增加氧气,小于0表示减少氧气,返回一个bool,表示计算完成后氧气值是否被扣为了0

heartalborada-del commented 2 years ago

问下大佬,请问下氧气值是咋加减的,我看了源码还不是很清楚 (看下能不能帮把这个实现了) image

问下大佬,请问下氧气值是咋加减的,我看了源码还不是很清楚 (看下能不能帮您把这个实现了) image

调用OxygenCalculatorSetOxygen函数

public static boolean SetOxygen(Player player, int delta)

delta是氧气增量,大于0表示增加氧气,小于0表示减少氧气,返回一个bool,表示计算完成后氧气值是否被扣为了0

好,谢谢大佬

GoldenPotato137 commented 2 years ago

问下大佬,请问下氧气值是咋加减的,我看了源码还不是很清楚 (看下能不能帮把这个实现了) image

问下大佬,请问下氧气值是咋加减的,我看了源码还不是很清楚 (看下能不能帮您把这个实现了) image

调用OxygenCalculatorSetOxygen函数

public static boolean SetOxygen(Player player, int delta)

delta是氧气增量,大于0表示增加氧气,小于0表示减少氧气,返回一个bool,表示计算完成后氧气值是否被扣为了0

好,谢谢大佬

刚刚口误了,我自裁,返回的bool表示完成操作之后氧气量是否大于0 再次感谢,我的超人!

heartalborada-del commented 2 years ago

应该没啥问题了,晚上服务器没人测试不了 (PS:其实应该还写个弓箭使用消耗的)

GoldenPotato137 commented 2 years ago

神中神!我刚刚把题敲完了(,终于可以来开搞力(

heartalborada-del commented 2 years ago

神中神!我刚刚把题敲完了(,终于可以来开搞力(

玩家的氧气值我改成double了不然难计算值很麻烦

GoldenPotato137 commented 2 years ago

我刚刚仔细看了一遍代码更改,没有特别大的问题,但是有几个小细节:

* 上面代码的函数忘记注释debug输出了(以及这样的输出方式是不被spigot推荐的,建议是用getLogger来输出,本插件在Util里把这个输出稍微包装了一下)
```java
public static void Log(String s)
heartalborada-del commented 2 years ago

我刚刚仔细看了一遍代码更改,没有特别大的问题,但是有几个小细节:

  • 所有涉及event修改的监听(包括event.setCancelled)在声明priority的时候是不能声明Monitor的,我个人的搞法是直接不声明priority(即默认的NORMAL) for example:
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) //这里优先级声明有问题
    public void OnPlaceBlock(BlockPlaceEvent event)
    {
        ItemStack item = event.getItemInHand().clone();
        if(item.isSimilar(MaskUpgradeT1.GetItem()) || item.isSimilar(MaskUpgradeT2.GetItem()) || item.isSimilar(MaskUpgradeT3.GetItem()))
        {
            System.out.println(item.getAmount());
            System.out.println(MaskUpgradeT1.GetItem().getAmount());
            Util.Message(event.getPlayer(), MessageManager.msg.CantPlace);
            event.setCancelled(true);
        }
    }
  • 上面代码的函数忘记注释debug输出了(以及这样的输出方式是不被spigot推荐的,建议是用getLogger来输出,本插件在Util里把这个输出稍微包装了一下)
public static void Log(String s)

有些时候调试完就忘删了,毕竟就调试的时候用

GoldenPotato137 commented 2 years ago

刚刚实际测试的时候我发现还有一个小问题:

其他地方功能表现良好,都odk

heartalborada-del commented 2 years ago

刚刚实际测试的时候我发现还有一个小问题:

  • 就是跑步时消耗氧气不是特别明显,当然,数值方面的问题以后再讨论问题也不大(doge)
  • 造成伤害消耗氧气和射箭消耗氧气那里我看到消耗的氧气量是/20的,这里我不是特别理解,因为这个event只会在发生的时候被调用一次,不像跑步那里因为每稍微移动一下就会被调用一次。在这里每造成一次伤害/射一次箭只会被调用一次,如此之下再/20可能值就会稍微小了些

其他地方功能表现良好,都odk

/20我记得是每tick处理一次才这样写的,伤害和射箭的问题可能是我脑抽写错了

GoldenPotato137 commented 2 years ago

草,我刚刚才发现你那堆commit用的邮箱好像不是绑到连接到github账户的电子邮箱?

第一次merge 别人的pr,不太清楚捏,我一直以为会直接显示contributors的

heartalborada-del commented 2 years ago

草,我刚刚才发现你那堆commit用的邮箱好像不是绑到连接到github账户的电子邮箱?

~第一次merge 别人的pr,不太清楚捏,我一直以为会直接显示contributors的~

两个邮箱,我可以改回来的(