Skip to content

Commit

Permalink
Add tamer expression, fix event-entity referencing to tamer (#361)
Browse files Browse the repository at this point in the history
  • Loading branch information
bensku committed Mar 4, 2017
1 parent 4aa5d37 commit 949ec1c
Show file tree
Hide file tree
Showing 4 changed files with 87 additions and 5 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
@@ -1,3 +1,3 @@
groupid=ch.njol
name=skript
version=2.2-dev24b
version=2.2-dev25
Expand Up @@ -413,11 +413,11 @@ public Projectile get(final ProjectileLaunchEvent e) {
}
}, 0);
// EntityTameEvent
EventValues.registerEventValue(EntityTameEvent.class, Player.class, new Getter<Player, EntityTameEvent>() {
EventValues.registerEventValue(EntityTameEvent.class, Entity.class, new Getter<Entity, EntityTameEvent>() {
@Override
@Nullable
public Player get(final EntityTameEvent e) {
return e.getOwner() instanceof Player ? (Player) e.getOwner() : null;
public Entity get(final EntityTameEvent e) {
return e.getEntity();
}
}, 0);
// EntityChangeBlockEvent
Expand Down
83 changes: 83 additions & 0 deletions src/main/java/ch/njol/skript/expressions/ExprTamer.java
@@ -0,0 +1,83 @@
/*
* This file is part of Skript.
*
* Skript is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Skript is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Skript. If not, see <http://www.gnu.org/licenses/>.
*
*
* Copyright 2011-2016 Peter Güttinger and contributors
*
*/

package ch.njol.skript.expressions;

import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.entity.EntityTameEvent;
import org.bukkit.event.inventory.ClickType;
import org.eclipse.jdt.annotation.Nullable;

import ch.njol.skript.ScriptLoader;
import ch.njol.skript.Skript;
import ch.njol.skript.doc.Description;
import ch.njol.skript.doc.Examples;
import ch.njol.skript.doc.Name;
import ch.njol.skript.doc.Since;
import ch.njol.skript.expressions.base.EventValueExpression;
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.ExpressionType;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.skript.lang.util.SimpleExpression;
import ch.njol.util.Kleenean;

@Name("Tamer")
@Description("The tamer of an entity. Can only be used in entity tame events. You can use 'event-entity' to refer tamed entity itself.")
@Examples("")
@Since("2.2-dev25")
public class ExprTamer extends SimpleExpression<Player> {

static {
Skript.registerExpression(ExprTamer.class, Player.class, ExpressionType.SIMPLE, "[the] tamer");
}

@Override
public boolean init(final Expression<?>[] exprs, final int matchedPattern, final Kleenean isDelayed, final ParseResult parser) {
if (!ScriptLoader.isCurrentEvent(EntityTameEvent.class)) {
Skript.error("tamer expression can be only used in entity tame event.");
return false;
}

return true;
}

@Override
protected Player[] get(final Event e) {
return new Player[] {((EntityTameEvent) e).getOwner() instanceof Player ? (Player) ((EntityTameEvent) e).getOwner() : null};
}

@Override
public Class<? extends Player> getReturnType() {
return Player.class;
}

@Override
public boolean isSingle() {
return true;
}

@Override
public String toString(final @Nullable Event e, final boolean debug) {
return "the tamer";
}
}
1 change: 0 additions & 1 deletion src/main/java/ch/njol/skript/expressions/ExprYawPitch.java
Expand Up @@ -58,7 +58,6 @@ public boolean init(final Expression<?>[] exprs, final int matchedPattern, final
return super.init(exprs, matchedPattern, isDelayed, parseResult);
}

@SuppressWarnings("null")
@Override
public Number convert(final Location l) {
return yaw ? convertToPositive(l.getYaw()) : l.getPitch();
Expand Down

0 comments on commit 949ec1c

Please sign in to comment.