Skip to content

Commit

Permalink
New lua functions, update to 1.2.2
Browse files Browse the repository at this point in the history
  • Loading branch information
nightwolf93 committed Aug 16, 2020
1 parent ff577ef commit 5826403
Show file tree
Hide file tree
Showing 19 changed files with 308 additions and 7 deletions.
1 change: 1 addition & 0 deletions src/main/java/fr/yuki/yrpf/character/CharacterStyle.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ public void attachStyleToPlayer(Player player) {
if(this.gender == null || this.body == null || this.hair == null ||
this.hairColor == null || this.top == null || this.pant == null
|| this.shoes == null) return;

player.setProperty("gender", this.gender, true);
player.setProperty("body", this.body, true);
player.setProperty("hair", this.hair, true);
Expand Down
11 changes: 11 additions & 0 deletions src/main/java/fr/yuki/yrpf/job/WearableWorldObject.java
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,11 @@ public void requestWear(Player player) {
deliveryPointGoal.getPosition().getX(), deliveryPointGoal.getPosition().getY(),
deliveryPointGoal.getPosition().getZ());
}

Onset.getServer().callLuaEvent("YRPF:JobAPI:OnWearWearableWorldObject", player.getId(),
this.modelId,
this.uuid,
this.position.getX(), this.position.getY(), this.position.getZ());
}

/**
Expand Down Expand Up @@ -151,6 +156,12 @@ public void requestUnwear(Player player, boolean delete) {
this.lastInteractionAt = System.currentTimeMillis();

if(delete) JobManager.getWearableWorldObjects().remove(this);
if(!delete) {
Onset.getServer().callLuaEvent("YRPF:JobAPI:OnDropWearableWorldObject", player.getId(),
this.modelId,
this.uuid,
this.position.getX(), this.position.getY(), this.position.getZ());
}
}
catch (Exception ex) {
ex.printStackTrace();
Expand Down
17 changes: 14 additions & 3 deletions src/main/java/fr/yuki/yrpf/luaapi/LuaAPIManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@
import fr.yuki.yrpf.luaapi.genericmenu.AddGenericMenuItemEF;
import fr.yuki.yrpf.luaapi.genericmenu.CreateGenericMenuEF;
import fr.yuki.yrpf.luaapi.genericmenu.ShowGenericMenuEF;
import fr.yuki.yrpf.luaapi.house.SetHouseObjectBehaviorEF;
import fr.yuki.yrpf.luaapi.items.CreateItemTemplateEF;
import fr.yuki.yrpf.luaapi.items.GetItemQuantityEF;
import fr.yuki.yrpf.luaapi.items.RemoveItemEF;
import fr.yuki.yrpf.luaapi.job.*;
import fr.yuki.yrpf.luaapi.map.AddMapMarkerEF;
import fr.yuki.yrpf.luaapi.map.RemoveMapMarkerEF;
import fr.yuki.yrpf.luaapi.vehicle.GetWorldVehicleByPlayerEF;
import fr.yuki.yrpf.luaapi.vehicle.PersistVehicleEF;
import fr.yuki.yrpf.luaapi.vehicle.SetVehicleItemChestSizeEF;
import fr.yuki.yrpf.luaapi.player.AddBankMoneyEF;
import fr.yuki.yrpf.luaapi.vehicle.*;
import net.onfirenetwork.onsetjava.Onset;

public class LuaAPIManager {
Expand All @@ -31,6 +31,8 @@ public static void init() {
Onset.getServer().addFunctionExport("AddItemResourceRequirement", new AddItemResourceRequirementEF());
Onset.getServer().addFunctionExport("SetHarvestAnimation", new SetHarvestAnimationEF());
Onset.getServer().addFunctionExport("IsJobWhitelisted", new IsJobWhitelistedEF());
Onset.getServer().addFunctionExport("SpawnWearableObject", new SpawnWearableObjectEF());
Onset.getServer().addFunctionExport("AddJobExp", new AddJobExpEF());

// Item API
Onset.getServer().addFunctionExport("CreateItemTemplate", new CreateItemTemplateEF());
Expand All @@ -51,5 +53,14 @@ public static void init() {
Onset.getServer().addFunctionExport("PersistVehicleInstance", new PersistVehicleEF());
Onset.getServer().addFunctionExport("GetWorldVehicleByPlayer", new GetWorldVehicleByPlayerEF());
Onset.getServer().addFunctionExport("SetVehicleItemChestSize", new SetVehicleItemChestSizeEF());
Onset.getServer().addFunctionExport("DeleteWearableObject", new DeleteWearableObjectEF());
Onset.getServer().addFunctionExport("CreateVehicleStoreLayout", new CreateVehicleStoreLayoutEF());
Onset.getServer().addFunctionExport("AddVehicleStoreLayoutItemPlacement", new AddVehicleStoreLayoutItemPlacementEF());

// House
Onset.getServer().addFunctionExport("SetHouseObjectBehavior", new SetHouseObjectBehaviorEF());

// Player
Onset.getServer().addFunctionExport("AddBankMoney", new AddBankMoneyEF());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package fr.yuki.yrpf.luaapi.house;

import fr.yuki.yrpf.manager.HouseManager;
import fr.yuki.yrpf.model.House;
import fr.yuki.yrpf.model.HouseItemObject;
import fr.yuki.yrpf.model.ItemShopObject;
import net.onfirenetwork.onsetjava.plugin.ExportFunction;

public class SetHouseObjectBehaviorEF implements ExportFunction {
@Override
public Object call(Object[] objects) {
House house = HouseManager.getHouses().stream().filter(x -> x.getId() == Integer.getInteger(objects[0].toString()))
.findFirst().orElse(null);
if(house == null) return false;
HouseItemObject houseItemObject = house.getHouseItemObjects().stream().filter(x -> x.getId() == Integer.parseInt(objects[1].toString()))
.findFirst().orElse(null);
houseItemObject.setFunctionId(Integer.parseInt(objects[2].toString()));
houseItemObject.reapplyFunctionId();
return true;
}
}
19 changes: 19 additions & 0 deletions src/main/java/fr/yuki/yrpf/luaapi/job/AddJobExpEF.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package fr.yuki.yrpf.luaapi.job;

import fr.yuki.yrpf.manager.JobManager;
import fr.yuki.yrpf.manager.WorldManager;
import fr.yuki.yrpf.model.Account;
import net.onfirenetwork.onsetjava.Onset;
import net.onfirenetwork.onsetjava.entity.Player;
import net.onfirenetwork.onsetjava.plugin.ExportFunction;

public class AddJobExpEF implements ExportFunction {
@Override
public Object call(Object[] objects) {
Player player = Onset.getPlayer(Integer.parseInt(objects[0].toString()));
Account account = WorldManager.getPlayerAccount(player);
if(account == null) return false;
JobManager.addExp(player, objects[1].toString(), Integer.parseInt(objects[2].toString()));
return true;
}
}
17 changes: 17 additions & 0 deletions src/main/java/fr/yuki/yrpf/luaapi/job/DeleteWearableObjectEF.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package fr.yuki.yrpf.luaapi.job;

import fr.yuki.yrpf.job.WearableWorldObject;
import fr.yuki.yrpf.manager.JobManager;
import net.onfirenetwork.onsetjava.plugin.ExportFunction;

public class DeleteWearableObjectEF implements ExportFunction {
@Override
public Object call(Object[] objects) {
String uuid = objects[0].toString();
WearableWorldObject wearableWorldObject = JobManager.getWearableWorldObjects().stream()
.filter(x -> x.getUuid().equals(uuid)).findFirst().orElse(null);
if(wearableWorldObject == null) return false;
wearableWorldObject.deleteObject();
return true;
}
}
40 changes: 40 additions & 0 deletions src/main/java/fr/yuki/yrpf/luaapi/job/SpawnWearableObjectEF.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package fr.yuki.yrpf.luaapi.job;

import com.google.gson.Gson;
import fr.yuki.yrpf.character.CharacterToolAnimation;
import fr.yuki.yrpf.job.WearableWorldObject;
import fr.yuki.yrpf.manager.JobManager;
import net.onfirenetwork.onsetjava.Onset;
import net.onfirenetwork.onsetjava.data.Vector;
import net.onfirenetwork.onsetjava.enums.Animation;
import net.onfirenetwork.onsetjava.plugin.ExportFunction;

public class SpawnWearableObjectEF implements ExportFunction {
@Override
public Object call(Object[] objects) {
// Parse parameters
try {
int modelId = Integer.parseInt(objects[0].toString());
String animation = objects[1].toString();
Vector position = new Vector(Double.parseDouble(objects[2].toString()), Double.parseDouble(objects[3].toString()),
Double.parseDouble(objects[4].toString()));
Vector positionWear = new Vector(Double.parseDouble(objects[5].toString()), Double.parseDouble(objects[6].toString()),
Double.parseDouble(objects[7].toString()));
Vector rotationWear = new Vector(Double.parseDouble(objects[8].toString()), Double.parseDouble(objects[9].toString()),
Double.parseDouble(objects[10].toString()));
Vector scaleWear = new Vector(Double.parseDouble(objects[11].toString()), Double.parseDouble(objects[12].toString()),
Double.parseDouble(objects[13].toString()));
String attachSocket = objects[14].toString();

WearableWorldObject wearableWorldObject = new WearableWorldObject(modelId,
true, Animation.valueOf(animation),
new CharacterToolAnimation(modelId, positionWear, rotationWear, scaleWear, attachSocket),
position);
JobManager.getWearableWorldObjects().add(wearableWorldObject);
return wearableWorldObject.getUuid();
}catch (Exception ex) {
ex.printStackTrace();
return "";
}
}
}
20 changes: 20 additions & 0 deletions src/main/java/fr/yuki/yrpf/luaapi/player/AddBankMoneyEF.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package fr.yuki.yrpf.luaapi.player;

import fr.yuki.yrpf.manager.WorldManager;
import fr.yuki.yrpf.model.Account;
import net.onfirenetwork.onsetjava.Onset;
import net.onfirenetwork.onsetjava.plugin.ExportFunction;

public class AddBankMoneyEF implements ExportFunction {
@Override
public Object call(Object[] objects) {
Account account = WorldManager.getPlayerAccount(Onset.getPlayer(Integer.parseInt(objects[0].toString())));
if(account == null) return false;
account.setBankMoney(account.getBankMoney() + Integer.parseInt(objects[1].toString()));
if(account.getBankMoney() < 0) {
account.setBankMoney(0);
}
account.save();
return true;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package fr.yuki.yrpf.luaapi.vehicle;

import fr.yuki.yrpf.manager.VehicleManager;
import fr.yuki.yrpf.vehicle.storeLayout.StoreLayoutTransform;
import fr.yuki.yrpf.vehicle.storeLayout.VehicleStoreLayout;
import net.onfirenetwork.onsetjava.data.Vector;
import net.onfirenetwork.onsetjava.plugin.ExportFunction;

public class AddVehicleStoreLayoutItemPlacementEF implements ExportFunction {
@Override
public Object call(Object[] objects) {
VehicleStoreLayout vehicleStoreLayout = VehicleManager.getVehicleStoreLayouts().stream()
.filter(x -> x.isAdaptedForModel(Integer.parseInt(objects[0].toString()))).findFirst().orElse(null);
if(vehicleStoreLayout == null) return false;
int modelId = Integer.parseInt(objects[1].toString());
int index = Integer.parseInt(objects[2].toString());
StoreLayoutTransform storeLayoutTransform = new StoreLayoutTransform(
index,
new Vector(Double.parseDouble(objects[3].toString()), Double.parseDouble(objects[4].toString()),
Double.parseDouble(objects[5].toString())),
new Vector(Double.parseDouble(objects[6].toString()), Double.parseDouble(objects[7].toString()),
Double.parseDouble(objects[8].toString())),
new Vector(Double.parseDouble(objects[9].toString()), Double.parseDouble(objects[10].toString()),
Double.parseDouble(objects[11].toString()))
);
vehicleStoreLayout.addStoreTransform(modelId, storeLayoutTransform);
return true;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package fr.yuki.yrpf.luaapi.vehicle;

import fr.yuki.yrpf.manager.VehicleManager;
import fr.yuki.yrpf.vehicle.storeLayout.CustomStoreLayout;
import fr.yuki.yrpf.vehicle.storeLayout.VehicleStoreLayout;
import net.onfirenetwork.onsetjava.plugin.ExportFunction;

public class CreateVehicleStoreLayoutEF implements ExportFunction {
@Override
public Object call(Object[] objects) {
VehicleStoreLayout vehicleStoreLayout = VehicleManager.getVehicleStoreLayouts().stream()
.filter(x -> x.isAdaptedForModel(Integer.parseInt(objects[0].toString()))).findFirst().orElse(null);
if(vehicleStoreLayout != null) return false;
VehicleManager.getVehicleStoreLayouts().add(new CustomStoreLayout(Integer.parseInt(objects[0].toString())));

return true;
}
}
6 changes: 6 additions & 0 deletions src/main/java/fr/yuki/yrpf/manager/JobManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -462,6 +462,12 @@ public static boolean requestVehicleRental(Player player) {
result.getVehicle().setColor(new Color(color.getRed(), color.getGreen(), color.getBlue()));
UIStateManager.sendNotification(player, ToastTypeEnum.SUCCESS, I18n.t(account.getLang(), "toast.job_vehicle.success_rental",
String.valueOf(nearbyJobVehicleRental.getCost())));


Onset.getServer().callLuaEvent("YRPF:JobAPI:OnVehicleRental", player.getId(),
nearbyJobVehicleRental.getJobId(),
nearbyJobVehicleRental.getVehicleModelId(),
result.getVehicle().getId());
return true;
}

Expand Down
5 changes: 5 additions & 0 deletions src/main/java/fr/yuki/yrpf/manager/VehicleManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -451,4 +451,9 @@ public static void handleVehicleHorn(Player player) {
if(!zone.canInteractWithDoor(player, nearestDoor)) return;
nearestDoor.setOpen(!nearestDoor.isOpen());
}

public static ArrayList<VehicleStoreLayout> getVehicleStoreLayouts() {
return vehicleStoreLayouts;
}

}
26 changes: 22 additions & 4 deletions src/main/java/fr/yuki/yrpf/model/HouseItemObject.java
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,28 @@ public void spawn() {
this.worldObject.setProperty("houseItemId", this.id, true);
this.worldObject.setStreamDistance(2500);

if(this.functionId != -1) {
this.reapplyFunctionId();

if(this.itemBehavior != null) {
this.itemBehavior.onSpawn();
}
}

Onset.getServer().callLuaEvent("YRPF:HouseAPI:OnHouseItemSpawned",
this.house.getId(),
this.id,
this.modelId,
this.functionId,
this.x,
this.y,
this.z,
this.rx,
this.ry,
this.rz);
}

public void reapplyFunctionId() {
if(this.functionId != -1) {
switch (this.functionId) {
case 1: // Radio
Expand All @@ -60,10 +82,6 @@ public void spawn() {
this.itemBehavior = new HouseChestBehavior(this);
break;
}

if(this.itemBehavior != null) {
this.itemBehavior.onSpawn();
}
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package fr.yuki.yrpf.vehicle.storeLayout;

import fr.yuki.yrpf.job.WearableWorldObject;
import net.onfirenetwork.onsetjava.Onset;
import net.onfirenetwork.onsetjava.data.Vector;

import java.util.ArrayList;
import java.util.HashMap;

public class CustomStoreLayout extends VehicleStoreLayout {
private HashMap<Integer, ArrayList<StoreLayoutTransform>> layoutTransforms;
private int vehicleModelId;

public CustomStoreLayout(int vehicleModelId) {
this.vehicleModelId = vehicleModelId;
this.layoutTransforms = new HashMap<>();
}

@Override
public boolean isAdaptedForModel(int modelId) {
return this.vehicleModelId == modelId;
}

@Override
public StoreLayoutTransform getStoreTransform(int index, WearableWorldObject wearableWorldObject) {
if(!this.layoutTransforms.containsKey(wearableWorldObject.getModelId())) return null;
if(this.layoutTransforms.get(wearableWorldObject.getModelId()).size() <= index){
Onset.print("Can't find a store layout transform for model="+wearableWorldObject.getModelId());
return null;
}
return this.layoutTransforms.get(wearableWorldObject.getModelId()).get(index);
}

@Override
public int maxStorageQuantity() {
return 100;
}

@Override
public int maxLayoutSlot(int modelId) {
if(!this.layoutTransforms.containsKey(modelId)) return 0;
return this.layoutTransforms.get(modelId).size();
}

@Override
public void addStoreTransform(int modelId, StoreLayoutTransform storeLayoutTransform) {
if(!this.layoutTransforms.containsKey(modelId)) {
this.layoutTransforms.put(modelId, new ArrayList<>());
}
this.layoutTransforms.get(modelId).add(storeLayoutTransform);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,12 @@ public int maxLayoutSlot(int modelId) {
if(!this.layoutTransforms.containsKey(modelId)) return 0;
return this.layoutTransforms.get(modelId).size();
}

@Override
public void addStoreTransform(int modelId, StoreLayoutTransform storeLayoutTransform) {
if(!this.layoutTransforms.containsKey(modelId)) {
this.layoutTransforms.put(modelId, new ArrayList<>());
}
this.layoutTransforms.get(modelId).add(storeLayoutTransform);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -73,4 +73,12 @@ public int maxLayoutSlot(int modelId) {
if(!this.layoutTransforms.containsKey(modelId)) return 0;
return this.layoutTransforms.get(modelId).size();
}

@Override
public void addStoreTransform(int modelId, StoreLayoutTransform storeLayoutTransform) {
if(!this.layoutTransforms.containsKey(modelId)) {
this.layoutTransforms.put(modelId, new ArrayList<>());
}
this.layoutTransforms.get(modelId).add(storeLayoutTransform);
}
}
Loading

0 comments on commit 5826403

Please sign in to comment.