Coder Social home page Coder Social logo

minestompvp's Issues

Checking which block snowball hits

There is no way to get position of hit block from ProjectileBlockHitEvent.
For projectiles with hitanticipation, there is no way to tell hit block location, because it is calculated as pos.add(velocity*0.06), but at time of event firing, velocity is already set to zero.

Snowballs can get stuck inside blocks

When player crouches and shoots snowball at pitch more than 60, snowball will get stuck in block without removing itself.
Upon removing block, snowball starts falling again and can interact with blocks normally.

ProjectileCollideWithBlockEvent not called when projectiles implemented wih minestompvp

I have a listener for ProjectileCollideWithBlockEvent, however it is not called when I throw a snowball (even though I have it implemented with this code:)

node.addChild(
			PvPConfig
				.emptyBuilder()
				.projectile(ProjectileConfig.emptyBuilder(false).snowball(true).build())
				.build().createNode()
		)

I need to use this event as opposed to the ProjectileBlockHitEvent, because that class does not contain things I need like collissionPosition and block.

FinallAttack Bug?

Hello, I have the following problem...
If I want to hit a player it only works 2-3 times then it doesn't work anymore. It only works if the player I want to hit gets damaged again by something else (e.g. falling damage) In my opinion this is not normal xD

Maven Repo

I'm looking into using the MinestomPvP API in my server but can't seem to find a Maven/Gradle repository to do so. What's the recommended way to hook into the API?

EntityDamageEvent is always cancelled

Line 134 of the DamageListener.java class will consistently cancel the DamageEvent.

    @Override
    public void setCancelled(boolean cancel) {
        StackFrame frame = StackWalker.getInstance().walk(stream -> stream.skip(1).findFirst().get());
        System.out.println("DamageEvent Cancellation changed by "
                + frame.getFileName() + ":" + frame.getLineNumber() + " to "
                + cancel);
        this.cancelled = cancel;
    }

During testing, I compiled a custom Minestom version that changes the setCancelled function of the EntityDamageEvent to the above code- effectively printing out whenever the value was changed, and by what.

In my own code, I listened to the EntityDamageEvent with a priority of -1 to run this;

System.out.println("Damage event " + event.getDamage() + " Cancelled? " + event.isCancelled()
					+ " Tracker Invuln " + Tracker.invulnerableTime.get(event.getEntity().getUuid())
					+ " Last Dmg " + Tracker.lastDamageTaken.getOrDefault(event.getEntity().getUuid(), -1f) + "");

This gives the following output; (using a Diamond Sword against another player)

Damage event 1.61024 Cancelled? false Tracker Invuln 20 Last Dmg 10.525438

DamageEvent Cancellation changed by DamageListener.java:134 to true

PvP code is started as so, and MinestomPvP is used as an extension, compiled from Jitpack's Maven Repo. Happy to attach anything else that is needed/debug further.

GlobalEventHandler globalEventHandler = MinecraftServer.getGlobalEventHandler();
EventNode<EntityEvent> pvpEvents = PvpExtension.events();
globalEventHandler.addChild(pvpEvents);

Feel free to DM on Discord- Gatt#0010

Error

java.lang.NoSuchMethodError: 'void net.minestom.server.network.packet.server.play.SoundEffectPacket.(net.minestom.server.sound.SoundEvent, net.kyori.adventure.sound.Sound$Source, net.minestom.server.coordinate.Point, float, float)'
at Ext_PvpExtension//io.github.bloepiloepi.pvp.listeners.DamageListener.handleEntityDamage(DamageListener.java:377)
at Ext_PvpExtension//io.github.bloepiloepi.pvp.listeners.DamageListener.lambda$events$0(DamageListener.java:56)
at net.minestom.server.event.EventListener$Builder$1.run(EventListener.java:151)
at net.minestom.server.event.EventNodeImpl$Handle.callListener(EventNodeImpl.java:488)
at net.minestom.server.event.EventNodeImpl$Handle.lambda$listenersConsumer$8(EventNodeImpl.java:420)
at net.minestom.server.event.EventNodeImpl$Handle.lambda$createConsumer$5(EventNodeImpl.java:391)
at net.minestom.server.event.EventNodeImpl$Handle.lambda$createConsumer$5(EventNodeImpl.java:399)
at net.minestom.server.event.EventNodeImpl$Handle.lambda$createConsumer$5(EventNodeImpl.java:399)
at net.minestom.server.event.EventNodeImpl$Handle.lambda$createConsumer$5(EventNodeImpl.java:399)
at net.minestom.server.event.EventNodeImpl$Handle.call(EventNodeImpl.java:324)
at net.minestom.server.event.EventNode.call(EventNode.java:190)
at net.minestom.server.event.EventNode.callCancellable(EventNode.java:215)
at net.minestom.server.event.EventDispatcher.callCancellable(EventDispatcher.java:18)
at net.minestom.server.entity.LivingEntity.damage(LivingEntity.java:340)
at Ext_PvpExtension//io.github.bloepiloepi.pvp.listeners.FallDamageHandler.handleFallDamage(FallDamageHandler.java:81)
at Ext_PvpExtension//io.github.bloepiloepi.pvp.listeners.DamageListener.lambda$events$2(DamageListener.java:72)
at net.minestom.server.event.EventListener$Builder$1.run(EventListener.java:151)
at net.minestom.server.event.EventNodeImpl$Handle.callListener(EventNodeImpl.java:488)
at net.minestom.server.event.EventNodeImpl$Handle.lambda$listenersConsumer$8(EventNodeImpl.java:420)
at net.minestom.server.event.EventNodeImpl$Handle.lambda$createConsumer$5(EventNodeImpl.java:391)
at net.minestom.server.event.EventNodeImpl$Handle.lambda$createConsumer$5(EventNodeImpl.java:399)
at net.minestom.server.event.EventNodeImpl$Handle.lambda$createConsumer$5(EventNodeImpl.java:399)
at net.minestom.server.event.EventNodeImpl$Handle.lambda$createConsumer$5(EventNodeImpl.java:399)
at net.minestom.server.event.EventNodeImpl$Handle.call(EventNodeImpl.java:324)
at net.minestom.server.event.EventNode.call(EventNode.java:190)
at net.minestom.server.event.EventDispatcher.call(EventDispatcher.java:10)
at net.minestom.server.listener.PlayerPositionListener.processMovement(PlayerPositionListener.java:57)
at net.minestom.server.listener.PlayerPositionListener.playerPositionListener(PlayerPositionListener.java:24)
at net.minestom.server.listener.manager.PacketListenerManager.processClientPacket(PacketListenerManager.java:90)
at net.minestom.server.entity.Player.lambda$interpretPacketQueue$16(Player.java:1808)
at org.jctools.queues.MpscUnboundedXaddArrayQueue.drain(MpscUnboundedXaddArrayQueue.java:312)
at net.minestom.server.entity.Player.interpretPacketQueue(Player.java:1808)
at net.minestom.server.entity.Player.update(Player.java:345)
at net.minestom.server.entity.Entity.tick(Entity.java:541)
at net.minestom.server.thread.TickThread.tick(TickThread.java:66)
at net.minestom.server.thread.TickThread.run(TickThread.java:41)

Events for Explosion Damage on Blocks & Players

  • Some events that give a list of affected blocks so that developers can remove some of the blocks (like protection blocks).
  • The knockback will not be applied to the player if the player's damage event is cancelled.

Knockback in water no less

Players get exactly the same knockback in water as if the water is not there. In Vanilla the player gets less knockback in the water

No support for the latest Minestom version

Hey, I tried to use this on my Minestom CE server and it sadly failed to work. The Extension class isn't present in the latest Minestom versions anymore. Can you look at that?

Question: Adding PVP-Events only to specific instance

Hey, I'm trying to get get PVP on an specific instance working.

Minestom's eventNode.appendChild within an Instance accepts as an Parameter
EventNode<? extends InstanceEvent>

MinestomPvp returs from PvpExtension.legacyEvents() or the new Builder EventNode <EntityEvent>

In all examples are always global event listener used, is there a way to register pvp events on specific Instances or even only players?

Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.